feat(): migrate to auth identity

This commit is contained in:
doas root
2025-11-18 00:25:24 +03:00
parent 63a057b020
commit f44e688662
18 changed files with 219 additions and 48 deletions
+2 -2
View File
@@ -15,7 +15,7 @@ from fastapi.middleware.cors import CORSMiddleware
from template_project.web_api.configuration import load_configuration
from template_project.web_api.ioc.make import make_ioc
from template_project.web_api.routes import healthcheck, user
from template_project.web_api.routes import auth, healthcheck
LOG_CONFIG: Final = {
"version": 1,
@@ -62,7 +62,7 @@ def make_asgi_application(
allow_methods=["*"],
allow_headers=["*"],
)
app.include_router(user.router)
app.include_router(auth.router)
app.include_router(healthcheck.router)
setup_dishka(container=ioc, app=app)
@@ -17,7 +17,7 @@ class ConnectionProvider(Provider):
async def async_session(self, engine: AsyncEngine) -> AsyncIterable[AsyncSession]:
session = AsyncSession(
bind=engine,
expire_on_commit=True,
expire_on_commit=False,
)
async with session:
yield session
@@ -1,6 +1,7 @@
from dishka import BaseScope, Provider, Scope, WithParents, provide, provide_all
from template_project.adapters.data_gateways.access_token import DefaultAccessTokenDataGateway
from template_project.adapters.data_gateways.auth_identity import DefaultAuthIdentityDataGateway
from template_project.adapters.data_gateways.user import DefaultUserDataGateway
from template_project.adapters.unit_of_work import DefaultUnitOfWork
@@ -12,4 +13,5 @@ class DataGatewayProvider(Provider):
data_gateways = provide_all(
WithParents[DefaultUserDataGateway],
WithParents[DefaultAccessTokenDataGateway],
WithParents[DefaultAuthIdentityDataGateway],
)
@@ -1,11 +1,11 @@
from dishka import BaseScope, Provider, Scope, provide_all
from template_project.application.user.interactors.sign_up import UserSignUpInteractor
from template_project.application.auth_identity.interactors.sign_up import AuthIdentityInteractor
class InteractorProvider(Provider):
scope: BaseScope | None = Scope.REQUEST
interactors = provide_all(
UserSignUpInteractor,
AuthIdentityInteractor,
)
@@ -3,8 +3,8 @@ from dishka.integrations.fastapi import DishkaRoute
from fastapi import APIRouter
from pydantic import BaseModel, SecretStr
from template_project.application.auth_identity.interactors.sign_up import AuthIdentityInteractor
from template_project.application.common.containers import SecretString
from template_project.application.user.interactors.sign_up import UserSignUpInteractor
router = APIRouter(route_class=DishkaRoute)
@@ -18,12 +18,12 @@ class UserSignUpResponse(BaseModel):
access_token: str
@router.post("/user/sign_up")
@router.post("/auth/sign_up/email")
async def sign_up(
request: UserSignUpRequest,
interactor: FromDishka[UserSignUpInteractor],
interactor: FromDishka[AuthIdentityInteractor],
) -> UserSignUpResponse:
response_interactor = await interactor.execute(
response_interactor = await interactor.sign_up_email(
email=request.email, password=SecretString(request.password.get_secret_value())
)
return UserSignUpResponse(