add transport and strategy

This commit is contained in:
IluaAir
2025-06-22 12:31:16 +03:00
parent 222f528b5e
commit 4e2cee6625
5 changed files with 34 additions and 5 deletions

4
.gitignore vendored
View File

@@ -1,2 +1,4 @@
/.venv/
/.idea
/.idea
/src/db/*.db
.env

View File

@@ -1,11 +1,14 @@
from typing import Annotated, AsyncGenerator
from fastapi import Depends
from fastapi_users.authentication.strategy import AccessTokenDatabase, DatabaseStrategy
from fastapi_users_db_sqlalchemy import SQLAlchemyUserDatabase
from fastapi_users_db_sqlalchemy.access_token import SQLAlchemyAccessTokenDatabase
from sqlalchemy.ext.asyncio import AsyncSession
from src.db.database import async_session_maker
from src.models import UsersORM
from src.models import UsersORM, AccessToken
from src.settings import settings
async def get_db() -> AsyncGenerator[AsyncSession, None]:
@@ -16,5 +19,22 @@ async def get_db() -> AsyncGenerator[AsyncSession, None]:
DBDep = Annotated[AsyncSession, Depends(get_db)]
async def get_user_db(session: DBDep):
async def get_user_db(
session: DBDep
):
yield SQLAlchemyUserDatabase(session, UsersORM)
async def get_access_token_db(
session: DBDep,
):
yield SQLAlchemyAccessTokenDatabase(session, AccessToken)
ATDep = Annotated[AccessTokenDatabase[AccessToken], Depends(get_access_token_db)]
def get_database_strategy(
access_token_db: ATDep,
) -> DatabaseStrategy:
return DatabaseStrategy(access_token_db, lifetime_seconds=settings.lifetime)

View File

@@ -1,5 +1,9 @@
from pydantic_settings import BaseSettings
from pydantic_settings import BaseSettings, SettingsConfigDict
class Settings(BaseSettings):
...
model_config = SettingsConfigDict(env_file='.env', env_file_encoding='utf-8')
lifetime: int
settings = Settings()

View File

View File

@@ -0,0 +1,3 @@
from fastapi_users.authentication import BearerTransport
bearer_transport = BearerTransport(tokenUrl="auth/jwt/login")