current or admin dep created

This commit is contained in:
IluaAir
2025-07-27 13:53:32 +03:00
parent 9f105c32c6
commit b9a9e4e094
2 changed files with 25 additions and 4 deletions

View File

@@ -1,6 +1,6 @@
from typing import Annotated from typing import Annotated
from fastapi import HTTPException, Depends from fastapi import HTTPException, Depends, Path
from fastapi.security import OAuth2PasswordBearer from fastapi.security import OAuth2PasswordBearer
from jwt import InvalidTokenError from jwt import InvalidTokenError
@@ -49,3 +49,24 @@ async def get_admin_user(db: sessionDep, current_user: ActiveUser):
AdminUser = Annotated[TokenData, Depends(get_admin_user)] AdminUser = Annotated[TokenData, Depends(get_admin_user)]
async def user_or_admin_path(db: sessionDep, id: int, current_user: ActiveUser):
if current_user.id == id:
return current_user
else:
admin = await get_admin_user(db, current_user)
return admin
async def user_or_admin(
db: sessionDep, current_user: ActiveUser, id: Annotated[int, Path()]
):
if current_user.id == id:
return current_user
else:
admin = await get_admin_user(db, current_user)
return admin
CurrentOrAdmin = Annotated[TokenData, Depends(user_or_admin)]

View File

@@ -1,6 +1,6 @@
from fastapi import APIRouter from fastapi import APIRouter
from src.api.dependacies.user_dep import ActiveUser, AdminUser from src.api.dependacies.user_dep import ActiveUser, AdminUser, CurrentOrAdmin
from src.api.dependacies.db_dep import sessionDep from src.api.dependacies.db_dep import sessionDep
from src.core.settings import settings from src.core.settings import settings
from src.services.users import UserService from src.services.users import UserService
@@ -20,6 +20,6 @@ async def get_all_users(db: sessionDep, _: AdminUser):
@router.get("/{id}") @router.get("/{id}")
async def get_user_by_id(db: sessionDep, id: int, _: AdminUser): async def get_user_by_id(db: sessionDep, id: int, _: CurrentOrAdmin):
user = await UserService(db).get_user_by_filter_or_raise(id=id) user = await UserService(db).get_user_by_filter_or_raise(id=id)
return user return user