Dynamic RBAC

Плагин добавляет в Payload v3 коллекции ролей и разрешений в базе данных и условия доступа, которые задаются в админке.

Сообщество 5 3/нед MIT v1.1.0

Установка

pnpm add payload-rbac-plugin

Описание

Плагин добавляет в Payload v3 контроль доступа на основе ролей, где проверяются разрешения, а не жестко прописанные роли. После регистрации в plugins он создает коллекции roles и permissions (их slug настраивается через rolesCollectionSlug и permissionsCollectionSlug) и добавляет поле roles типа hasMany в auth-коллекцию, по умолчанию users. Это поле сохраняется в JWT, поэтому проверка ролей не требует отдельного запроса к базе. CheckPermission(slug) возвращает access-функцию Payload для операции над коллекцией, а hasPermission(user, slug) подходит для кастомных эндпоинтов, хуков и логики в UI. Разрешение может содержать условия, заданные в админке, например sender equals {{user.id}}. CheckPermission преобразует их в where-условие, а getPermissionQuery(user, slug) возвращает тот же результат для ручных запросов. Поддерживаются плейсхолдеры {{user.id}}, {{user.roles}} и {{user.role}}, а также значения true и false. Bulk CRUD Generator в админке создает разрешения create, read, update и delete для выбранной коллекции за одно сохранение. Вспомогательные поля генератора существуют только в интерфейсе и не сохраняются. Схемы ролей и разрешений можно расширять через rolesFields и permissionsFields, а видимость разделов в боковом меню задается опциями hideRoles и hidePermissions. Доступ к генерируемым коллекциям задается через rolesAccess и permissionsAccess, но по умолчанию он открыт всем, поэтому в продакшене эти опции нужно переопределить явно. Плагин требует payload ^3.85.0 как peer dependency. В пакете есть хук beforePermissionChange в src/hooks и тесты на Vitest, включая unit и интеграционные. Текущая версия 1.1.0, лицензия MIT.

О пакете

Имя пакета
payload-rbac-plugin
Последняя версия
1.1.0
Размер
91 кБ
Лицензия
MIT
Загрузок в неделю
3
Последняя публикация
8 июн. 2026 г.

Ещё от Mhmod-Hsn

Профиль автора