diff --git a/src/transport/__init__.py b/src/api/dependacies/__init__.py similarity index 100% rename from src/transport/__init__.py rename to src/api/dependacies/__init__.py diff --git a/src/api/dependancies.py b/src/api/dependacies/dependancies.py similarity index 80% rename from src/api/dependancies.py rename to src/api/dependacies/dependancies.py index a11f90b..e14f18b 100644 --- a/src/api/dependancies.py +++ b/src/api/dependacies/dependancies.py @@ -1,14 +1,13 @@ from typing import Annotated, AsyncGenerator from fastapi import Depends -from fastapi_users.authentication.strategy import AccessTokenDatabase, DatabaseStrategy +from fastapi_users.authentication.strategy import AccessTokenDatabase 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, AccessToken -from src.settings import settings async def get_db() -> AsyncGenerator[AsyncSession, None]: @@ -32,9 +31,3 @@ async def get_access_token_db( 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) diff --git a/src/api/dependacies/strategy.py b/src/api/dependacies/strategy.py new file mode 100644 index 0000000..549bac7 --- /dev/null +++ b/src/api/dependacies/strategy.py @@ -0,0 +1,21 @@ +from fastapi import Depends +from fastapi_users.authentication import AuthenticationBackend +from fastapi_users.authentication.strategy import DatabaseStrategy, AccessTokenDatabase + +from src.api.dependacies.dependancies import get_access_token_db +from src.api.dependacies.transport import bearer_transport +from src.models import AccessToken +from src.settings import settings + + +def get_database_strategy( + access_token_db: AccessTokenDatabase[AccessToken] = Depends(get_access_token_db), +) -> DatabaseStrategy: + return DatabaseStrategy(access_token_db, lifetime_seconds=settings.lifetime) + + +auth_backend = AuthenticationBackend( + name="database", + transport=bearer_transport, + get_strategy=get_database_strategy, +) \ No newline at end of file diff --git a/src/api/dependacies/transport.py b/src/api/dependacies/transport.py new file mode 100644 index 0000000..39a0763 --- /dev/null +++ b/src/api/dependacies/transport.py @@ -0,0 +1,4 @@ +from fastapi_users.authentication import BearerTransport + + +bearer_transport = BearerTransport(tokenUrl="auth/login") diff --git a/src/api/tasks.py b/src/api/tasks.py index 88369ab..ca95993 100644 --- a/src/api/tasks.py +++ b/src/api/tasks.py @@ -7,21 +7,21 @@ router = APIRouter(prefix="/tasks", tags=["Tasks"]) async def get_tasks(): ... -@router.get("/{task_id}") -async def get_task_id(task_id: int): ... +@router.get("/{id}") +async def get_task_id(id: int): ... @router.post("/") async def post_task(): ... -@router.put("/{task_id}") -async def put_task(task_id: int): ... +@router.put("/{id}") +async def put_task(id: int): ... -@router.patch("/{task_id}") -async def patch_task(task_id: int): ... +@router.patch("/{id}") +async def patch_task(id: int): ... -@router.delete("/{task_id}") -async def delete_task(task_id: int): ... +@router.delete("/{id}") +async def delete_task(id: int): ... diff --git a/src/settings.py b/src/settings.py index a6b9019..b47ddd6 100644 --- a/src/settings.py +++ b/src/settings.py @@ -3,7 +3,8 @@ from pydantic_settings import BaseSettings, SettingsConfigDict class Settings(BaseSettings): model_config = SettingsConfigDict(env_file='.env', env_file_encoding='utf-8') - lifetime: int + LIFETIME: int + SECRET: str settings = Settings() diff --git a/src/transport/transport.py b/src/transport/transport.py deleted file mode 100644 index 3f7f2f0..0000000 --- a/src/transport/transport.py +++ /dev/null @@ -1,3 +0,0 @@ -from fastapi_users.authentication import BearerTransport - -bearer_transport = BearerTransport(tokenUrl="auth/jwt/login")