Fix auth dependency
This commit is contained in:
@ -21,7 +21,7 @@ LOG = logging.getLogger(__name__)
|
|||||||
|
|
||||||
def create_router(dependencies: AdminDependencies) -> APIRouter:
|
def create_router(dependencies: AdminDependencies) -> APIRouter:
|
||||||
"""Create clients router."""
|
"""Create clients router."""
|
||||||
app = APIRouter()
|
app = APIRouter(dependencies=[Depends(dependencies.get_current_active_user)])
|
||||||
|
|
||||||
@app.get("/clients/")
|
@app.get("/clients/")
|
||||||
async def get_clients(
|
async def get_clients(
|
||||||
|
|||||||
@ -19,7 +19,7 @@ LOG = logging.getLogger(__name__)
|
|||||||
|
|
||||||
def create_router(dependencies: AdminDependencies) -> APIRouter:
|
def create_router(dependencies: AdminDependencies) -> APIRouter:
|
||||||
"""Create secrets router."""
|
"""Create secrets router."""
|
||||||
app = APIRouter()
|
app = APIRouter(dependencies=[Depends(dependencies.get_current_active_user)])
|
||||||
|
|
||||||
@app.get("/secrets/")
|
@app.get("/secrets/")
|
||||||
async def get_secret_names(
|
async def get_secret_names(
|
||||||
|
|||||||
@ -55,7 +55,9 @@ def create_router(dependencies: BaseDependencies) -> APIRouter:
|
|||||||
raise HTTPException(status_code=400, detail="Inactive or disabled user")
|
raise HTTPException(status_code=400, detail="Inactive or disabled user")
|
||||||
return current_user
|
return current_user
|
||||||
|
|
||||||
async def get_admin_backend(session: Annotated[Session, Depends(dependencies.get_db_session)]):
|
async def get_admin_backend(
|
||||||
|
session: Annotated[Session, Depends(dependencies.get_db_session)]
|
||||||
|
):
|
||||||
"""Get admin backend API."""
|
"""Get admin backend API."""
|
||||||
password_db = session.exec(select(PasswordDB).where(PasswordDB.id == 1)).first()
|
password_db = session.exec(select(PasswordDB).where(PasswordDB.id == 1)).first()
|
||||||
if not password_db:
|
if not password_db:
|
||||||
@ -65,11 +67,13 @@ def create_router(dependencies: BaseDependencies) -> APIRouter:
|
|||||||
admin = AdminBackend(dependencies.settings, password_db.encrypted_password)
|
admin = AdminBackend(dependencies.settings, password_db.encrypted_password)
|
||||||
yield admin
|
yield admin
|
||||||
|
|
||||||
app = APIRouter(
|
app = APIRouter(prefix=f"/api/{API_VERSION}")
|
||||||
prefix=f"/api/{API_VERSION}", dependencies=[Depends(get_current_active_user)]
|
|
||||||
|
endpoint_deps = AdminDependencies.create(
|
||||||
|
dependencies, get_admin_backend, get_current_active_user
|
||||||
)
|
)
|
||||||
|
|
||||||
endpoint_deps = AdminDependencies.create(dependencies, get_admin_backend)
|
LOG.debug("Registering sub-routers")
|
||||||
|
|
||||||
app.include_router(auth.create_router(endpoint_deps))
|
app.include_router(auth.create_router(endpoint_deps))
|
||||||
app.include_router(clients.create_router(endpoint_deps))
|
app.include_router(clients.create_router(endpoint_deps))
|
||||||
|
|||||||
@ -2,9 +2,10 @@
|
|||||||
|
|
||||||
from collections.abc import AsyncGenerator, Callable, Generator
|
from collections.abc import AsyncGenerator, Callable, Generator
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
from typing import Self
|
from typing import Awaitable, Self
|
||||||
|
|
||||||
from sqlmodel import Session
|
from sqlmodel import Session
|
||||||
|
from sshecret_admin.auth import User
|
||||||
from sshecret_admin.services import AdminBackend
|
from sshecret_admin.services import AdminBackend
|
||||||
from sshecret_admin.core.settings import AdminServerSettings
|
from sshecret_admin.core.settings import AdminServerSettings
|
||||||
|
|
||||||
@ -13,6 +14,8 @@ DBSessionDep = Callable[[], Generator[Session, None, None]]
|
|||||||
|
|
||||||
AdminDep = Callable[[Session], AsyncGenerator[AdminBackend, None]]
|
AdminDep = Callable[[Session], AsyncGenerator[AdminBackend, None]]
|
||||||
|
|
||||||
|
GetUserDep = Callable[[User], Awaitable[User]]
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class BaseDependencies:
|
class BaseDependencies:
|
||||||
@ -21,17 +24,25 @@ class BaseDependencies:
|
|||||||
settings: AdminServerSettings
|
settings: AdminServerSettings
|
||||||
get_db_session: DBSessionDep
|
get_db_session: DBSessionDep
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class AdminDependencies(BaseDependencies):
|
class AdminDependencies(BaseDependencies):
|
||||||
"""Dependency class with admin."""
|
"""Dependency class with admin."""
|
||||||
|
|
||||||
get_admin_backend: AdminDep
|
get_admin_backend: AdminDep
|
||||||
|
get_current_active_user: GetUserDep
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def create(cls, deps: BaseDependencies, get_admin_backend: AdminDep) -> Self:
|
def create(
|
||||||
|
cls,
|
||||||
|
deps: BaseDependencies,
|
||||||
|
get_admin_backend: AdminDep,
|
||||||
|
get_current_active_user: GetUserDep,
|
||||||
|
) -> Self:
|
||||||
"""Create from base dependencies."""
|
"""Create from base dependencies."""
|
||||||
return cls(
|
return cls(
|
||||||
settings=deps.settings,
|
settings=deps.settings,
|
||||||
get_db_session=deps.get_db_session,
|
get_db_session=deps.get_db_session,
|
||||||
get_admin_backend=get_admin_backend,
|
get_admin_backend=get_admin_backend,
|
||||||
|
get_current_active_user=get_current_active_user,
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user