from typing import Optional from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.orm import Session from models import User from schemas import UserSchema from database import get_db from utils import verify_password, create_access_token router = APIRouter() @router.post("/request-access", response_model=UserSchema) async def request_access(user_data: UserSchema, db: Session = Depends(get_db)): """ Request access for a user by providing email and password. Returns the user data along with an access token if successful. """ user = db.query(User).filter(User.email == user_data.email).first() if not user: raise HTTPException(status_code=404, detail="User not found") if not verify_password(user_data.password, user.hashed_password): raise HTTPException(status_code=401, detail="Incorrect password") access_token = create_access_token(user.id) return {**user_data.dict(), "access_token": access_token}