Files
aivideo/backend/app/modules/auth/router.py

56 lines
1.6 KiB
Python

from fastapi import APIRouter, Cookie, Depends, Request, Response
from sqlalchemy.orm import Session
from app.common.db.session import get_db
from app.common.responses.api_response import success_response
from app.common.security.deps import get_current_user
from app.models.entities import User
from app.modules.auth.schema import LoginRequest, RegisterRequest
from app.modules.auth.service import AuthService
router = APIRouter(prefix="/api/v1/auth", tags=["auth"])
@router.post("/register")
def register(
payload: RegisterRequest,
request: Request,
response: Response,
db: Session = Depends(get_db),
):
data = AuthService(db).register(payload, request, response)
return {"code": 0, "message": "ok", "data": data}
@router.post("/login")
def login(
payload: LoginRequest,
request: Request,
response: Response,
db: Session = Depends(get_db),
):
data = AuthService(db).login(payload, request, response)
return {"code": 0, "message": "ok", "data": data}
@router.post("/refresh")
def refresh(
response: Response,
db: Session = Depends(get_db),
user_refresh_token: str | None = Cookie(default=None),
):
data = AuthService(db).refresh(user_refresh_token, response)
return {"code": 0, "message": "ok", "data": data}
@router.post("/logout")
def logout(response: Response, db: Session = Depends(get_db)):
AuthService(db).logout(response)
return {"code": 0, "message": "ok", "data": {"success": True}}
@router.get("/me")
def me(current_user: User = Depends(get_current_user)):
return success_response(AuthService.serialize_user(current_user))