fix: controle acces
This commit is contained in:
parent
6c210f3c33
commit
543d33a29b
1 changed files with 100 additions and 5 deletions
|
|
@ -435,14 +435,14 @@ Variables:
|
|||
La liste n'est pas non plus un type. C'est une propriété d'une variable. Cela signifie qu'une liste ne peut pas contenir des valeurs de plusieurs types.
|
||||
|
||||
|
||||
### Famille "objet"
|
||||
### Famille objet
|
||||
|
||||
Une famille est une variable d'un type particuiler. C'est un conteneur destiné à accueillir des variables.
|
||||
|
||||
|
||||
#### Un "objet"
|
||||
#### Un objet
|
||||
|
||||
Ce qu'on appele "object" généralement est appeler dans Rougail des "familles". Donc au lieu de déclarer mes variables à la racine, je vais la déclarer dans une famille.
|
||||
Ce qu'on appele "objet" généralement est appeler dans Rougail des "familles". Donc au lieu de déclarer mes variables à la racine, je vais la déclarer dans une famille.
|
||||
|
||||
Par exemple dans le fichier `structure_family.yml` je créé un famille my_object qui contient deux variables :
|
||||
|
||||
|
|
@ -474,7 +474,7 @@ rougail -m structure_family.yml -o json
|
|||
Les familles gèrent l'arborescence. Il est possible de faire des sous-familles.
|
||||
|
||||
|
||||
#### Liste d'"object"
|
||||
#### Liste d'objet
|
||||
|
||||
Une famille particulière, appeler "leadership" permet d'avoir une liste d'objet identique.
|
||||
|
||||
|
|
@ -720,9 +720,104 @@ Variables:
|
|||
```
|
||||
|
||||
|
||||
## Contrôle des accès
|
||||
|
||||
Le contrôle des accès est réalisé dès qu'on essaye d'accéder à une variable.
|
||||
|
||||
Dans Tiramisu il existe deux modes d'accès aux variables par défaut :
|
||||
|
||||
- le mode "lecture écriture" : ce mode est utilisé au moment du chargement des données utilisateurs
|
||||
- le mode "lecture seule" : ce mode est utilisé au moment de le représentation des valeurs
|
||||
|
||||
Il existe deux grands type de contrôle des accès :
|
||||
|
||||
- les modes
|
||||
- les propriétés
|
||||
|
||||
On pourrait rajouter les étiquettes à cette liste, même si l'objectif n'est pas spécialement de contrôler les accès via les étiquettes.
|
||||
|
||||
|
||||
Inspiré par ABAC
|
||||
### Les modes
|
||||
|
||||
On va partir sur un cas classic de définition des modes. On part sur trois mode :
|
||||
|
||||
- basic : de façon automatique les variables obligatoires sans valeur par défaut (dans ce cas l'acteur qui adapte la configuration devra obligatoirement renseigné des valeurs) et manuellement les variables que l'acteur qui définit les variables juge utile
|
||||
- standard : automatique les autres variables
|
||||
- advanced : les variables que l'acteur qui définit les variables décide de mettre
|
||||
|
||||
Par exemple créons deux variables dans `structure_mode.yml` avec des modes différents :
|
||||
|
||||
```yaml
|
||||
%YAML 1.2
|
||||
---
|
||||
version: 1.1
|
||||
|
||||
standard_variable: default value
|
||||
|
||||
advanced_variable:
|
||||
mode: advanced
|
||||
default: default value
|
||||
...
|
||||
```
|
||||
|
||||
Avec le fichier `userdata_mode.yml` :
|
||||
|
||||
```yaml
|
||||
---
|
||||
standard_variable: value
|
||||
|
||||
advanced_variable: value
|
||||
```
|
||||
|
||||
```yaml
|
||||
rougail -m structure_mode.yml -u yaml -ff userdata_mode.yml --modes_level basic standard advanced
|
||||
╭────────────── Caption ───────────────╮
|
||||
│ Variable Modified value │
|
||||
│ (⏳ Original default value) │
|
||||
╰──────────────────────────────────────╯
|
||||
Variables:
|
||||
┣━━ 📓 standard_variable: value ◀ loaded from the YAML file "userdata_mode.yml" (⏳ default value)
|
||||
┗━━ 📓 advanced_variable: value ◀ loaded from the YAML file "userdata_mode.yml" (⏳ default value)
|
||||
```
|
||||
|
||||
Et interdisont aux acteurs adaptant la configuration de modifier les variables "advanced" :
|
||||
|
||||
```bash
|
||||
rougail -m structure_mode.yml -u yaml -yf userdata_mode.yml --modes_level basic standard advanced --cli.inaccessible_read_write_modes advanced
|
||||
🔔 WARNINGS
|
||||
┗━━ variable "advanced_variable" is advanced, it will be ignored when loading from the YAML file "userdata_mode.yml"
|
||||
╭───────────────────── Caption ─────────────────────╮
|
||||
│ Variable Default value │
|
||||
│ Undocumented variable Modified value │
|
||||
│ (⏳ Original default value) │
|
||||
╰───────────────────────────────────────────────────╯
|
||||
Variables:
|
||||
┣━━ 📓 standard_variable: value ◀ loaded from the YAML file "userdata_mode.yml" (⏳ default value)
|
||||
┗━━ 📓 advanced_variable: default value
|
||||
```
|
||||
|
||||
La gestion des modes est plutôt limités via la ligne de commande. Pour des besoins plus spécifique il sera nécessaire de passer par la bibliothèque.
|
||||
|
||||
|
||||
### Les propriétés
|
||||
|
||||
Les deux propriétés importantes sont :
|
||||
|
||||
- les variables cachée
|
||||
- les variables désactivée
|
||||
|
||||
Ces propriétés peuvent être fixe ou calculer suivant le contexte
|
||||
|
||||
|
||||
#### Variable cachée
|
||||
|
||||
Une variable cachée est une variable qui ne sera pas modifiable par l'utilisateur et que ne sera pas présente en mode "lecture écriture" mais présente en mode "lecture seule"
|
||||
|
||||
|
||||
#### Variable désactivée
|
||||
|
||||
|
||||
prééminance
|
||||
Spécialisation des variables
|
||||
Modèle de configuration
|
||||
Réutilisable/partageable
|
||||
|
|
|
|||
Loading…
Reference in a new issue