fix: controle acces

This commit is contained in:
egarette@silique.fr 2025-11-19 17:41:22 +01:00
parent 6c210f3c33
commit 543d33a29b

View file

@ -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