auth next part
This commit is contained in:
@@ -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
|
||||
|
@@ -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"])
|
||||
|
||||
|
Reference in New Issue
Block a user