Spaces:
Build error
Build error
from functools import wraps | |
from typing import Callable | |
from core.config import settings | |
def check_permission(func) -> Callable: | |
def inner_wrapper(*args, **kwargs): | |
# from cruds import crud_user | |
from cruds import crud_user_permission | |
model_name = args[0].model.__name__ | |
req_user = kwargs.get("req_user") | |
inner_func_name = func.__name__ | |
if req_user.user_type == settings.UserType.SUPERADMIN.value: | |
return func(*args, **kwargs) | |
else: | |
for permission in req_user.permission: | |
permission_name = crud_user_permission.get_by_id(args[1], id=permission) | |
permission_name_sub = permission_name[-8:] | |
if model_name == permission_name[: len(model_name) + 1]: | |
operation = inner_func_name[0:4] | |
if operation == permission_name_sub: | |
return func(*args, **kwargs) | |
operation = inner_func_name[0:7] | |
if operation == permission_name_sub: | |
return func(*args, **kwargs) | |
return inner_wrapper | |