34 lines
914 B
Python
34 lines
914 B
Python
from fastapi import APIRouter, Response, Depends
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
|
|
from app.database.session import get_db
|
|
from app.domain.entities.auth import AuthEntity
|
|
from app.domain.entities.token_entity import TokenEntity
|
|
from app.infrastructure.auth_service import AuthService
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
@router.post(
|
|
'/',
|
|
response_model=TokenEntity,
|
|
summary="User authentication",
|
|
description="Logs in the user and outputs the `access_token` in the `cookie'",
|
|
)
|
|
async def auth_user(
|
|
response: Response,
|
|
user_data: AuthEntity,
|
|
db: AsyncSession = Depends(get_db),
|
|
):
|
|
auth_service = AuthService(db)
|
|
token = await auth_service.authenticate_user(user_data.login, user_data.password)
|
|
|
|
response.set_cookie(
|
|
key="users_access_token",
|
|
value=token["access_token"],
|
|
httponly=True,
|
|
samesite="Lax",
|
|
)
|
|
|
|
return token
|