permissions 1.1 and hash_password issue solve
This commit is contained in:
30
server/backend/permissions.py
Normal file
30
server/backend/permissions.py
Normal file
@@ -0,0 +1,30 @@
|
||||
from fastapi import Depends, HTTPException, status, Path, Request
|
||||
from . import JWT
|
||||
from server.database import db
|
||||
|
||||
def check_permission(required: str):
|
||||
async def wrapper(
|
||||
request: Request,
|
||||
current_user = Depends(JWT.current_user),
|
||||
):
|
||||
requested_email = request.path_params.get("email")
|
||||
user = await db.get_user_by_email(current_user)
|
||||
perms = user.permissions[0]
|
||||
# если админ → разрешено всегда
|
||||
if perms.is_admin:
|
||||
return user
|
||||
# проверяем, что у пользователя есть нужное право
|
||||
if not getattr(perms, required, False):
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_403_FORBIDDEN,
|
||||
detail=f"You don't have a permission"
|
||||
)
|
||||
# проверяем, что работает только со своим email
|
||||
if current_user.lower() != requested_email.lower():
|
||||
raise HTTPException(
|
||||
status_code=status.HTTP_403_FORBIDDEN,
|
||||
detail=f"You can only do this with your own account"
|
||||
)
|
||||
|
||||
return user
|
||||
return wrapper
|
||||
Reference in New Issue
Block a user