Можно ли получить доступ к информации декоратора метода в Python?
Я разработал метод RBAC в проекте Django, используя следующую концепцию:
- Объявите атрибут
permission_roles
в теле View/Viewset .
- Этот атрибут получает информацию о ролях пользователей, которые могут получить доступ к каждому методу/действию представления (например:
'create': (RoleChoices.ADMIN)
)
Тогда мне пришлось подумать, как сообщить фронтенду о возможностях роли.
Я подумал об использовании нового класса модели Permission
, который хранит массив ролей и имеет уникальный идентификатор имени (например: Permission(action="user_management_list", roles=[1,2,3])
)
Для наполнения этой модели я использовал метод autodiscover Django + декоратор, который находится над моими методами/действиями представления:
@allowed_roles('user_management_list', [RoleChoices.ADMIN])
def list(self, request, *args, **kwargs):
return super().list(request, *args, **kwargs)
Теперь я думаю о том, как объединить обе функциональности, упростив пользовательское разрешение RBAC с помощью имени действия + роли пользователя запроса и запроса непосредственно к БД (позже я буду использовать также стратегию кэширования для снижения нагрузки на БД).
Но проблема в том, как я могу получить доступ к первому параметру декоратора (это имя действия)?