from fastapi import Request, HTTPException, Depends
from sqlalchemy.orm import Session
from .database import get_db
from .models import User

async def get_approved_user(request: Request, db: Session = Depends(get_db)):
    user_session = request.session.get('user')
    
    # 1. Check if logged in
    if not user_session:
        raise HTTPException(status_code=401, detail="Please login with Google first.")

    # 2. Check database for current approval status
    user = db.query(User).filter(User.email == user_session['email']).first()
    
    if not user:
        raise HTTPException(status_code=401, detail="User not found.")
        
    if not user.is_approved:
        raise HTTPException(
            status_code=403, 
            detail="Your account is pending admin approval. Please contact the administrator."
        )
    
    return user