Dynamic RBAC

Ergänzt Payload v3 um datenbankgestützte Rollen und Berechtigungen, optional mit Bedingungen pro Dokument.

Community 5 3/Wo. MIT v1.1.0

Installation

pnpm add payload-rbac-plugin

Über

Das Plugin fügt Payload v3 eine rollenbasierte Zugriffskontrolle auf Basis von Berechtigungen hinzu, statt Rollen im Code fest abzufragen. Die Funktion `rbac()` wird in `plugins` registriert. Danach legt sie die Collections für Rollen und Berechtigungen an, deren Slugs konfigurierbar sind, und ergänzt die Auth-Collection (standardmäßig `users`) um ein `hasMany`-Feld `roles`. Dieses Feld wird mit `saveToJWT` ins JWT geschrieben, sodass Berechtigungsprüfungen die Rollen ohne zusätzliche Datenbankabfrage lesen können. Für Zugriffsregeln stehen `checkPermission(slug)` und `hasPermission(user, slug)` bereit. `checkPermission` gibt eine Access-Funktion zurück, die einer Collection-Operation zugewiesen wird. `hasPermission` eignet sich für eigene Endpunkte, Hooks oder UI-Logik. Eine Berechtigung kann Bedingungen enthalten, die in der Admin-UI definiert werden, etwa `sender equals {{user.id}}`. `checkPermission` übersetzt sie in eine Payload-`where`-Klausel. `getPermissionQuery(user, slug)` liefert dasselbe Ergebnis für manuelle Abfragen: `true`, `false` oder ein `where`-Objekt. Als Platzhalter stehen `{{user.id}}`, `{{user.roles}}`, `{{user.role}}` sowie die booleschen Werte `true` und `false` zur Verfügung. Einzelne Berechtigungen lassen sich in der Admin-UI anlegen. Der Bulk CRUD Generator erstellt für eine Collection in einem Speichervorgang die Berechtigungen `create`, `read`, `update` und `delete`. Seine Hilfsfelder werden nicht gespeichert. Über `rolesFields` und `permissionsFields` lassen sich die Schemata um eigene Felder erweitern. Mit `hideRoles` und `hidePermissions` steuert man die Sichtbarkeit in der Sidebar pro Benutzer. Die Optionen `rolesAccess` und `permissionsAccess` legen die Zugriffsregeln für die erzeugten Collections fest. Standardmäßig sind beide öffentlich, daher sollten sie vor dem Produktivbetrieb explizit überschrieben werden. Das Plugin setzt `payload` in der Version `^3.85.0` als Peer-Dependency voraus. Paketversion ist 1.1.0, Lizenz MIT. Ein `beforePermissionChange`-Hook liegt im Verzeichnis `src/hooks`, Unit- und Integrationstests laufen mit Vitest.

Paketinformationen

Paketname
payload-rbac-plugin
Neueste Version
1.1.0
Entpackte Größe
91 kB
Lizenz
MIT
Wöchentliche Downloads
3
Zuletzt veröffentlicht
8. Juni 2026

Mehr von Mhmod-Hsn

Profil ansehen

Ähnliche Plugins

Mehr in Auth