auth next part

This commit is contained in:
2024-04-02 22:33:15 +03:00
parent 949ea9fdcf
commit b04eba9bc4
22 changed files with 298 additions and 29 deletions

View File

@@ -1,9 +1,14 @@
from typing import Annotated
from fastapi import APIRouter, Depends
from fastapi import APIRouter, Depends, Response
from fastapi.security import OAuth2PasswordRequestForm
from api.application.contracts.auth import UserCreateRequest
from api.application.contracts.auth import LoginRequest, UserCreateRequest
from api.application.contracts.auth.auth_response import AuthenticationResponse
from api.application.protocols.jwt import JwtTokenProcessor
from api.application.usecase.auth.auth_user import LoginUser
from api.application.usecase.auth.create_user import CreateUser
from api.domain.user.model import UserId
from api.infrastructure.dependencies.stub import Stub
auth_router = APIRouter(prefix="/auth", tags=["Auth"])
@@ -15,3 +20,22 @@ async def create_user(
usecase: Annotated[CreateUser, Depends(Stub(CreateUser))],
) -> None:
return await usecase.execute(request)
@auth_router.post("/login", response_model=AuthenticationResponse)
async def login(
response: Response,
login_request: Annotated[OAuth2PasswordRequestForm, Depends()],
login_interactor: Annotated[LoginUser, Depends(Stub(LoginUser))],
token_processor: Annotated[JwtTokenProcessor, Depends(Stub(JwtTokenProcessor))],
) -> AuthenticationResponse:
user = await login_interactor(
LoginRequest(
email=login_request.username,
password=login_request.password,
)
)
token = token_processor.generate_token(UserId(user.id))
response.set_cookie(key="access_token", value=f"Bearer {token}", httponly=True)
return user

View File

@@ -1,9 +1,6 @@
from typing import Annotated
from fastapi import APIRouter, Depends
from fastapi import APIRouter
from api.application.contracts.user import UserResponse
from api.infrastructure.dependencies.stub import Stub
user_router = APIRouter(prefix="/users", tags=["Users"])