current or admin dep created
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
from typing import Annotated
|
||||
|
||||
from fastapi import HTTPException, Depends
|
||||
from fastapi import HTTPException, Depends, Path
|
||||
from fastapi.security import OAuth2PasswordBearer
|
||||
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)]
|
||||
|
||||
|
||||
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)]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
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.core.settings import settings
|
||||
from src.services.users import UserService
|
||||
@@ -20,6 +20,6 @@ async def get_all_users(db: sessionDep, _: AdminUser):
|
||||
|
||||
|
||||
@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)
|
||||
return user
|
||||
return user
|
||||
|
||||
Reference in New Issue
Block a user