diff --git a/src/api/dependacies/dependancies.py b/src/api/dependacies/dependancies.py index aa082fe..6eae8bf 100644 --- a/src/api/dependacies/dependancies.py +++ b/src/api/dependacies/dependancies.py @@ -8,6 +8,7 @@ from sqlalchemy.ext.asyncio import AsyncSession from src.db.database import async_session_maker from src.models import UsersORM, AccessToken +from src.utils.user_manager import UserManager async def get_db() -> AsyncGenerator[AsyncSession, None]: @@ -18,7 +19,7 @@ async def get_db() -> AsyncGenerator[AsyncSession, None]: DBDep = Annotated[AsyncSession, Depends(get_db)] -async def get_user_db(session: DBDep): +async def get_users_db(session: DBDep): yield SQLAlchemyUserDatabase(session, UsersORM) @@ -29,3 +30,7 @@ async def get_access_token_db( ATDep = Annotated[AccessTokenDatabase[AccessToken], Depends(get_access_token_db)] + + +async def get_user_manager(users_db: Annotated[SQLAlchemyUserDatabase, Depends(get_users_db)]): + yield UserManager(users_db) diff --git a/src/utils/user_manager.py b/src/utils/user_manager.py index 8b13789..d1822f4 100644 --- a/src/utils/user_manager.py +++ b/src/utils/user_manager.py @@ -1 +1,34 @@ +import logging +from typing import Optional +from fastapi import Request +from fastapi_users import BaseUserManager, IntegerIDMixin + +from src.models import UsersORM +from src.settings import settings + +logger = logging.getLogger() + + +class UserManager(IntegerIDMixin, BaseUserManager[UsersORM, int]): + reset_password_token_secret = settings.SECRET + verification_token_secret = settings.SECRET + + async def on_after_register( + self, user: UsersORM, request: Optional[Request] = None + ): + logger.warning("User %r has registered.", user.id) + + async def on_after_forgot_password( + self, user: UsersORM, token: str, request: Optional[Request] = None + ): + logger.warning( + "User %r has forgot their password. Reset token: %r", user.id, token + ) + + async def on_after_request_verify( + self, user: UsersORM, token: str, request: Optional[Request] = None + ): + logger.warning( + "Verification requested for user %r. Verification token: %r", user.id, token + )