Warding

Плагин RBAC для Payload 2.x: генерирует коллекции user и role и добавляет проверку доступа к коллекциям, глобалам, полям и эндпоинтам.

Сообщество 17 7/нед MIT v0.1.10

Установка

pnpm add payload-warding

Описание

Плагин добавляет ролевую модель доступа (RBAC) в Payload, генерируя коллекции `user` и `role` на этапе сборки. Он сканирует все коллекции, глобалы, поля и эндпоинты в конфигурации и строит набор фичей. Каждая фича представляет собой кортеж `{feature, traits, verbs}`, где feature это slug коллекции или глобала, traits содержат имена полей или пути эндпоинтов, а verbs определяют разрешённые действия: create, read, update, delete. Роли составляются из комбинаций этих фичей и настраиваются через страницу редактирования ролей в админ-панели. Плагин инжектит функции `access` в коллекции, глобалы и отдельные поля. Для коллекций функция `access.create` проверяет slug коллекции с глаголом create. Для полей `access.update` проверяет slug коллекции, имя поля как trait и глагол update. Эндпоинты получают обработчик `check`, который добавляется в начало массива обработчиков. Глагол выводится из HTTP-метода: post соответствует create, get, head и options соответствуют read, put и patch соответствуют update, delete соответствует delete. Для коллекций с включённой авторизацией добавляются проверки `admin` и `unlock`. Отключить проверку для конкретной коллекции, глобала, поля или эндпоинта можно через `custom.warding.should` или по отдельным глаголам через `custom.warding.should.[verb]`. Если вы передаёте собственную функцию доступа, плагин помещает сгенерированную проверку в `req.context.warding`, чтобы вы могли вызвать её вручную. Опция `mod` позволяет переписать сгенерированные коллекции и warden до их возврата, а `ext` регистрирует кастомные фичи, которые не привязаны к конкретной коллекции или глобалу. При инициализации плагин может создать root-роль со всеми привилегиями и опционального root-пользователя. Если инициализацию пропустить, первый пользователь, созданный через страницу create-first-user, автоматически привязывается к root-роли. Стандартные метки доступны на английском и китайском языках. Плагин работает с Payload 2.x (peer dependency `payload: ^2.1.0`).

О пакете

Имя пакета
payload-warding
Последняя версия
0.1.10
Размер
127 кБ
Лицензия
MIT
Загрузок в неделю
7
Последняя публикация
14 нояб. 2023 г.