19 lines
551 B
Python
19 lines
551 B
Python
|
from ..dependencies import users_active
|
||
|
from fastapi import Depends, HTTPException, status
|
||
|
from ..models import users
|
||
|
|
||
|
|
||
|
class PermissionChecker:
|
||
|
|
||
|
def __init__(self, roles: list[str]) -> None:
|
||
|
self.roles = roles
|
||
|
|
||
|
def __call__(self, user: users.User = Depends(users_active.get_current_active_user)) -> bool:
|
||
|
for role in self.roles:
|
||
|
if role == user.roles:
|
||
|
return True
|
||
|
raise HTTPException(
|
||
|
status_code=status.HTTP_401_UNAUTHORIZED,
|
||
|
detail='Roles unauthorized'
|
||
|
)
|