56 lines
1.6 KiB
Python
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))
|