Ця документація була автоматично перекладена штучним інтелектом.
ACL (Access Control List) використовується для контролю дозволів на операції з ресурсами. Ви можете надавати дозволи ролям або обходити обмеження ролей і безпосередньо встановлювати дозволи. Система ACL пропонує гнучкий механізм керування дозволами, підтримуючи фрагменти дозволів, проміжне ПЗ, умовні перевірки та інші методи.
Об'єкти ACL належать до джерел даних (dataSource.acl). До ACL основного джерела даних можна швидко отримати доступ через app.acl. Детальніше про використання ACL інших джерел даних дивіться в розділі Керування джерелами даних.
Фрагменти дозволів (Snippet) дозволяють реєструвати часто використовувані комбінації дозволів як багаторазові одиниці дозволів. Після прив'язки ролі до фрагмента вона отримує відповідний набір дозволів. Це зменшує дублювання конфігурації та підвищує ефективність керування дозволами.
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'.Після реєстрації ця операція з'явиться в інтерфейсі конфігурації дозволів, де адміністратори зможуть налаштовувати дозволи для цієї операції на сторінці керування ролями.