23 lines
976 B
Python
23 lines
976 B
Python
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} |