Video-Rag / app /routes /auth.py
Hammad712's picture
first commit
e84d389
from fastapi import APIRouter, HTTPException, Depends
from fastapi.security import OAuth2PasswordRequestForm
from ..models.user import UserCreate, User, Token
from ..services.auth import get_password_hash, authenticate_user, create_access_token
from ..db.mongodb import mongodb
router = APIRouter()
@router.post("/register", response_model=User)
async def register(user: UserCreate):
if mongodb.users.find_one({"username": user.username}):
raise HTTPException(400, "Username already registered")
if mongodb.users.find_one({"email": user.email}):
raise HTTPException(400, "Email already registered")
hashed = get_password_hash(user.password)
user_dict = user.dict(exclude={"password"})
user_dict["hashed_password"] = hashed
mongodb.users.insert_one(user_dict)
return User(**user_dict)
@router.post("/token", response_model=Token)
async def login(form_data: OAuth2PasswordRequestForm = Depends()):
user = authenticate_user(form_data.username, form_data.password)
if not user:
raise HTTPException(401, "Incorrect username or password", headers={"WWW-Authenticate": "Bearer"})
token = create_access_token({"sub": user.username})
return {"access_token": token, "token_type": "bearer"}