Rights
Ce module de gestion des droits permet de définir des règles d’accès précises pour des modules, des items et des champs. Chaque règle est structurée en utilisant une syntaxe standardisée de sélecteurs et d’opérations.
Structure de la Syntaxe
Chaque règle est composée de plusieurs éléments de sélecteur, permettant d’indiquer :
- Les Modules ciblés (un ou plusieurs).
- Les Items associés aux modules.
- Les Champs d’items.
- Les Métadonnées et les champs associés aux couches de métadonnées.
Des Opérations spécifiques peuvent être appliquées sur chaque type d’élément.
Sélecteurs
Les sélecteurs définissent les composants de la hiérarchie de permissions. Voici la syntaxe pour chaque type de sélecteur :
- Modules :
$[NomModule1]$[NomModule2]$...
ou$*
— Sélectionne un module ou une hiérarchie de modules. - Items :
__[NomItem | *]
— Sélectionne un item spécifique ou tous les items. - Champs :
:f&[NomChamp | *]
— Sélectionne un champ d’item spécifique ou tous les champs. - Couches de métadonnées :
:m.[NomCouche1].[NomCouche2]
ou:m*
— Sélectionne une couche de métadonnées spécifique ou toute les couches. - Champs de métadonnées :
:m.[NomCouche | *]:f&[NomChampMeta | *]
— Sélectionne un champ spécifique dans une couche de métadonnées ou tout les champs.
Opérations
Chaque règle peut appliquer une ou plusieurs opérations sur le module, l’item ou le champ spécifié :
--* :
toutes les opérations--read
: lecture ( ⚠️par défauttrue
si un Item ou Field est spécifié⚠️ )--write
: écriture--delete
: suppression--import
: importation--export
: exportation
Modificateur de Requête sur les Items
Un item peut être sélectionné via une requête, utilisant la syntaxe suivante pour spécifier un item répondant à certains critères :
__{{itemname}}(WHERE:f:token = "token"&&:f:id = "id")
Implémentation
Importez le module infrasoft-vnv-api-kit, Utilisez Management qui propose l’utilitaire Rights. Cet utilitaire permet d’interpréter un tableau de droits ( ArrayRights ) en un format JSON.
Import dans un projet
import { Management } from "@infrasoftbe/infrasoft-vnv-api-kit";
Chaque règle de droits est traduite dans un objet JSON facilitant l’accès aux données par les modules de l’application.
import { Management } from "@infrasoftbe/infrasoft-vnv-api-kit";
Management.Rights([...]).json();
Exemples de Syntaxe
Voici des exemples concrets pour illustrer les possibilités de la syntaxe et des sélecteurs.
Exemple de Configuration d’Administrateur
const rights = [
// All_Modules -> All_Rights
"$*--*",
// All_Modules -> All_Items -> All_Rights
"$*__*--*",
// All_Modules -> All_Items -> All_Fields -> All_Rights
"$*__*:f&*--*",
// All_Modules -> All_Items -> All_Metadata_layers -> All_Fields -> All_Rights
"$*__*:m.*:f&*--*",
];
Exemples Génériques
Ces exemples montrent comment restreindre les permissions en utilisant des couches de modules et des requêtes de sélection de modules.
Module & Default operation
Code
import { Management } from "@infrasoftbe/infrasoft-vnv-api-kit";
let right = ["$Navigator.Simple"];
console.log({ rights: Management.Right().json() });
Output
{
"Navigator": {
"operations": {
"read": true
},
"Simple": {
"operations": {
"read": true,
"write": false,
"delete": false,
"import": false,
"export": false
},
"items": {}
}
}
}
Module & Operations
Code
import { Management } from "@infrasoftbe/infrasoft-vnv-api-kit";
let right = ["$Navigator.Simple--import"];
console.log({ rights: Management.Right().json() });
Output
{
"Navigator": {
"operations": {
"read": true
},
"Simple": {
"operations": {
"read": true,
"write": false,
"delete": false,
"import": true,
"export": false
},
"items": {}
}
}
}
Ces exemples montrent comment restreindre les permissions en utilisant des couches de métadonnées et des requêtes de sélection d’items, de champs, de couche métadonée.
Module & Item
Voici le contenu de l'accordéon. Vous pouvez y mettre tout ce que vous voulez, comme du texte, des listes ou même d'autres composants.
Code
import { Management } from "@infrasoftbe/infrasoft-vnv-api-kit";
let right = ["$Navigator.Simple__work"];
console.log({ rights: Management.Right().json() });
Output
{
"Navigator": {
"operations": {
"read": true
},
"Simple": {
"operations": {
"read": true
},
"items": {
"work": {
"operations": {
"read": true,
"write": false,
"delete": false,
"import": false,
"export": false
},
"fields": {},
"metadata": {}
}
}
}
}
}
Module & Item opertations
Voici le contenu de l'accordéon. Vous pouvez y mettre tout ce que vous voulez, comme du texte, des listes ou même d'autres composants.
Code
import { Management } from "@infrasoftbe/infrasoft-vnv-api-kit";
let right = ["$Navigator.Simple__work--write"];
console.log({ rights: Management.Right().json() });
Output
{
"Navigator": {
"operations": {
"read": true
},
"Simple": {
"operations": {
"read": true
},
"items": {
"work": {
"operations": {
"read": true,
"write": true,
"delete": false,
"import": false,
"export": false
},
"fields": {},
"metadata": {}
}
}
}
}
}
Module & Item fields
Voici le contenu de l'accordéon. Vous pouvez y mettre tout ce que vous voulez, comme du texte, des listes ou même d'autres composants.
Code
import { Management } from "@infrasoftbe/infrasoft-vnv-api-kit";
let right = ["$Navigator.Simple__work:f&token"];
console.log({ rights: Management.Right().json() });
Output
{
"Navigator": {
"operations": {
"read": true
},
"Simple": {
"operations": {
"read": true
},
"items": {
"work": {
"operations": {
"read": true,
"write": false,
"delete": false,
"import": false,
"export": false
},
"fields": {
"token": {
"operations": {
"read": true,
"write": false,
"delete": false,
"import": false,
"export": false
}
}
},
"metadata": {}
}
}
}
}
}
Module & Item fields operations
Voici le contenu de l'accordéon. Vous pouvez y mettre tout ce que vous voulez, comme du texte, des listes ou même d'autres composants.
Code
import { Management } from "@infrasoftbe/infrasoft-vnv-api-kit";
let right = ["$Navigator.Simple__work:f&token--write"];
console.log({ rights: Management.Right().json() });
Output
{
"Navigator": {
"operations": {
"read": true
},
"Simple": {
"operations": {
"read": true
},
"items": {
"work": {
"operations": {
"read": true,
"write": false,
"delete": false,
"import": false,
"export": false
},
"fields": {
"token": {
"operations": {
"read": true,
"write": true,
"delete": false,
"import": false,
"export": false
}
}
},
"metadata": {}
}
}
}
}
}
Module & Item metadata fields
Voici le contenu de l'accordéon. Vous pouvez y mettre tout ce que vous voulez, comme du texte, des listes ou même d'autres composants.
Code
import { Management } from "@infrasoftbe/infrasoft-vnv-api-kit";
let right = ["$Navigator.Simple__work:m.:f&description"];
console.log({ rights: Management.Right().json() });
Output
{
"Navigator": {
"operations": {
"read": true
},
"Simple": {
"operations": {
"read": true
},
"items": {
"work": {
"operations": {
"read": true,
"write": false,
"delete": false,
"import": false,
"export": false
},
"fields": {},
"metadata": {
"description": {
"operations": {
"read": true,
"write": false,
"delete": false,
"import": false,
"export": false
}
}
}
}
}
}
}
}
Module & Item metadata fields operations
Voici le contenu de l'accordéon. Vous pouvez y mettre tout ce que vous voulez, comme du texte, des listes ou même d'autres composants.
Code
import { Management } from "@infrasoftbe/infrasoft-vnv-api-kit";
let right = ["$Navigator.Simple__work:m.:f&description--write"];
console.log({ rights: Management.Right().json() });
Output
{
"Navigator": {
"operations": {
"read": true
},
"Simple": {
"operations": {
"read": true
},
"items": {
"work": {
"operations": {
"read": true,
"write": false,
"delete": false,
"import": false,
"export": false
},
"fields": {},
"metadata": {
"description": {
"operations": {
"read": true,
"write": true,
"delete": false,
"import": false,
"export": false
}
}
}
}
}
}
}
}
Les règles de cascade permettent de définir des droits globaux ou spécifiques selon la hiérarchie. Par exemple :
Cascading rights
Les permissions s’appliquent avec une hiérarchie en cascade :
- Modules : Les droits peuvent être attribués à des modules entiers ou à des sous-modules en utilisant un * pour capturer tous les sous-modules.
- Items : Chaque item d’un module peut avoir des permissions spécifiques.
- Champs : Des champs spécifiques d’un item peuvent être sélectionnés pour définir des droits précis.
- Métadonnées : Les permissions sur les métadonnées sont structurées avec des couches, permettant d’accéder à des niveaux spécifiques de métadonnées.
Code
import { Management } from "@infrasoftbe/infrasoft-vnv-api-kit";
let right = [
"$Navigator.Simple--import",
"$Navigator.Simple--export",
"$Navigator.Simple--delete",
"$Navigator.Simple__project",
"$Navigator.Simple__project--delete",
"$Navigator.Simple__project--import",
"$Navigator.Simple__project--export",
"$Navigator.Simple__project:f&name",
"$Navigator.Simple__project:f&token",
"$Navigator.Simple__project:f&create_dt",
"$Navigator.Simple__project:f&update_dt",
"$Navigator.Simple__project:m.:f&description--write",
];
console.log({ rights: Management.Right().json() });
Output
{
"Navigator": {
"operations": { "read": true },
"Simple": {
"operations": {
"read": true,
"write": false,
"delete": true,
"import": true,
"export": true
},
"items": {
"project": {
"operations": {
"read": true,
"write": false,
"delete": true,
"import": true,
"export": true
},
"fields": {
"name": {
"operations": {
"read": true,
"write": false,
"delete": false,
"import": false,
"export": false
}
},
"token": {
"operations": {
"read": true,
"write": false,
"delete": false,
"import": false,
"export": false
}
},
"create_dt": {
"operations": {
"read": true,
"write": false,
"delete": false,
"import": false,
"export": false
}
},
"update_dt": {
"operations": {
"read": true,
"write": false,
"delete": false,
"import": false,
"export": false
}
}
},
"metadata": {
"description": {
"operations": {
"read": true,
"write": true,
"delete": false,
"import": false,
"export": false
}
}
}
}
}
}
}
}
Test zone
{}