Files
GenExam-IA/backend/app/api/routes/auth.py
T
2026-05-19 10:21:34 +02:00

44 lines
1.5 KiB
Python

from typing import Annotated
from fastapi import APIRouter, Depends, status
from app.core.auth import get_current_user
from app.models.user import User
from app.schemas.user import GoogleLoginRequest, TokenResponse, UserLogin, UserRead, UserRegister
from app.services.auth_service import AuthService, get_auth_service
router = APIRouter(prefix="/auth", tags=["auth"])
@router.post("/register", response_model=UserRead, status_code=status.HTTP_201_CREATED)
def register(
payload: UserRegister,
auth_service: Annotated[AuthService, Depends(get_auth_service)],
) -> UserRead:
return auth_service.register(payload)
@router.post("/login", response_model=TokenResponse)
def login(
payload: UserLogin,
auth_service: Annotated[AuthService, Depends(get_auth_service)],
) -> TokenResponse:
user = auth_service.authenticate(payload)
token = auth_service.create_access_token(user.id)
return TokenResponse(access_token=token)
@router.post("/google", response_model=TokenResponse)
def login_with_google(
payload: GoogleLoginRequest,
auth_service: Annotated[AuthService, Depends(get_auth_service)],
) -> TokenResponse:
user = auth_service.login_with_google(payload.id_token)
token = auth_service.create_access_token(user.id)
return TokenResponse(access_token=token)
@router.get("/me", response_model=UserRead)
def get_me(current_user: Annotated[User, Depends(get_current_user)]) -> UserRead:
return UserRead.model_validate(current_user)