Эта документация была автоматически переведена ИИ.
ACL (Access Control List) используется для контроля прав доступа к операциям с ресурсами. Вы можете назначать права ролям или напрямую ограничивать их, минуя ролевые ограничения. Система ACL предлагает гибкий механизм управления правами, поддерживающий фрагменты прав (snippets), промежуточное ПО (middleware), условные проверки и другие методы.
Объекты ACL принадлежат к источнику данных (dataSource.acl). К ACL основного источника данных можно быстро получить доступ через app.acl. Подробнее об использовании ACL для других источников данных см. в главе Управление источниками данных.
Фрагменты прав (snippets) позволяют регистрировать часто используемые комбинации прав в качестве многократно используемых единиц. После привязки роли к фрагменту она получает соответствующий набор прав, что сокращает дублирование настроек и повышает эффективность управления правами.
acl.allow() используется для разрешения определенных операций в обход ролевых ограничений. Это подходит для публичных API, сценариев с динамической оценкой прав или случаев, когда проверка прав должна основываться на контексте запроса.
Описание параметра condition:
'public' : Доступно любому пользователю (включая неавторизованных), без какой-либо аутентификации.'loggedIn' : Доступно только авторизованным пользователям, требуется действительная учетная запись.(ctx) => Promise<boolean> или (ctx) => boolean : Пользовательская функция, которая динамически определяет, разрешен ли доступ, на основе контекста запроса. Позволяет реализовать сложную логику прав.acl.use() используется для регистрации пользовательского промежуточного ПО для прав, что позволяет вставлять собственную логику в процесс проверки прав. Обычно используется в сочетании с ctx.permission для определения пользовательских правил прав. Подходит для сценариев, требующих нестандартного контроля прав, например, для публичных форм, где нужна пользовательская проверка пароля, или для динамической оценки прав на основе параметров запроса.
Типичные сценарии использования:
Управление правами через ctx.permission:
Описание свойств ctx.permission:
skip: true : Пропускает последующие проверки прав ACL и напрямую разрешает доступ.addFixedParams позволяет добавлять фиксированные ограничения по диапазону данных (фильтр) для операций с определенными ресурсами. Эти ограничения применяются напрямую, минуя ролевые ограничения, и обычно используются для защиты критически важных системных данных.
Совет:
addFixedParamsможно использовать для предотвращения случайного удаления или изменения конфиденциальных данных, таких как встроенные системные роли, учетные записи администраторов и т.д. Эти ограничения действуют в сочетании с ролевыми правами, гарантируя, что даже при наличии прав защищенные данные не могут быть изменены.
acl.can() используется для проверки наличия у определенной роли прав на выполнение указанной операции, возвращая объект с результатом проверки или null. Часто используется для динамической проверки прав в бизнес-логике, например, в промежуточном ПО или обработчиках операций, чтобы определить, разрешено ли выполнение определенных действий на основе ролей.
Совет: Если передано несколько ролей, каждая роль будет проверена последовательно, и будет возвращен результат для первой роли, обладающей необходимыми правами.
Определения типов:
Если вы хотите, чтобы пользовательские операции могли быть настроены через пользовательский интерфейс (например, отображались на странице управления ролями), вам необходимо зарегистрировать их с помощью setAvailableAction. Зарегистрированные операции появятся в интерфейсе настройки прав, где администраторы смогут конфигурировать права доступа к операциям для различных ролей.
Описание параметров:
{{t("key")}}).'new-data' : Операции, создающие новые данные (например, импорт, добавление и т.д.).'existing-data' : Операции, изменяющие существующие данные (например, обновление, удаление и т.д.).'new-data'.После регистрации эта операция появится в интерфейсе настройки прав, где администраторы смогут конфигурировать права доступа к ней на странице управления ролями.