rbac-generator
v2.1.0
Published
CLI npm pour generer un squelette RBAC frontend/backend a partir d'un modele declaratif.
Maintainers
Readme
RBAC Generator CLI
rbac-generator est une CLI Node.js qui genere un squelette RBAC frontend/backend a partir d'un modele declaratif defini dans access-model.config.mjs.
Installation
Installation globale recommandee pour la commande de creation de projet :
npm install -g rbac-generatorOu comme dependance de developpement dans un projet existant :
npm install -D rbac-generatorOu sans installation globale :
npx rbac-generator generateQuick Start
- Initialisez un projet RBAC minimal
- Completez
access-model.config.mjs - Lancez la generation
npx rbac-generator init mon-projetPuis :
cd mon-projet
npx rbac-generator generateExemple de configuration
export default {
appName: "SimpleApp",
chemins: {
backend: "backend",
frontend: "frontend",
},
roles: {
ETUDIANT: {
label: "Etudiant",
dbRole: "app_student",
defaultFrontendRoute: "/student",
},
ENSEIGNANT: {
label: "Enseignant",
dbRole: "app_teacher",
defaultFrontendRoute: "/teacher",
},
},
frontend: {
publicRoutes: ["/login"],
routeRules: [
{
key: "studentHome",
path: "/student",
match: "prefix",
allow: ["ETUDIANT"],
description: "Espace etudiant",
},
{
key: "teacherHome",
path: "/teacher",
match: "prefix",
allow: ["ENSEIGNANT"],
description: "Espace enseignant",
},
],
},
backend: {
resources: [
{
key: "grades",
basePath: "/grades",
description: "Gestion des notes",
operations: [
{
key: "list",
method: "get",
path: "/",
allow: ["ENSEIGNANT"],
description: "Lister les notes",
},
{
key: "readOwn",
method: "get",
path: "/me",
allow: ["ETUDIANT"],
description: "Lire ses propres notes",
},
],
},
],
},
};Commandes
Initialiser un projet RBAC avec un package.json minimal et un access-model.config.mjs :
rbac-generator init mon-projetCette commande cree implicitement la base du projet, comme un npm init non interactif, avec un package.json minimal adapte au generateur RBAC.
Alias court :
rbac-generator i mon-projetGenerer les fichiers :
rbac-generator generateSi access-model.config.mjs n'existe pas encore, la commande cree automatiquement un fichier de configuration minimal. Completez-le puis relancez generate.
Verifier si les fichiers generes sont a jour :
rbac-generator generate --checkVoir les changements sans ecrire sur disque :
rbac-generator generate --dry-runSupprimer les fichiers generes :
rbac-generator cleanVoir ce qui serait supprime :
rbac-generator clean --dry-runOptions
Par defaut, la CLI lit access-model.config.mjs dans le repertoire courant.
Vous pouvez cibler un autre projet ou un autre fichier de configuration :
rbac-generator generate --cwd ./mon-projet --config ./config/access-model.config.mjsVous pouvez aussi initialiser un autre dossier projet :
rbac-generator init --cwd ./mon-projetOu bien fournir directement le nom du projet :
rbac-generator init mon-projetFichiers generes
La CLI genere notamment :
access-scaffold.generated.mdbackend/access/generated/rbac.generated.jsbackend/scaffold/generated/...frontend/lib/access.generated.tsfrontend/scaffold/generated/...
Les chemins backend/frontend dependent des valeurs definies dans chemins.
Lors de l'initialisation, la CLI peut aussi creer :
package.jsonaccess-model.config.mjs- le dossier du projet cible s'il n'existe pas encore
Cas d'usage
Cette CLI est utile si vous voulez :
- centraliser les roles et permissions dans un seul modele
- generer une base coherente pour le backend et le frontend
- eviter les ecarts entre permissions backend et affichage frontend
- accelerer le scaffolding d'un systeme RBAC
Notes
- Le fichier de configuration doit exporter un objet par defaut
- Les roles references dans les routes et permissions doivent exister
- Chaque role doit avoir une route frontend par defaut protegee par une regle compatible
initeticreent une base minimale pour commencer rapidementinitse comporte comme un bootstrap de projet et initialise implicitement lepackage.jsongeneratepeut creer automatiquement la configuration si elle n'existe pas encore
