current or admin dep created
This commit is contained in:
@@ -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)]
|
||||||
|
|||||||
@@ -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
|
||||||
Reference in New Issue
Block a user