Aller au contenu principal

Gestion de l'accès utilisateur

Aperçu

Le système de gestion de l'accès utilisateur est conçu pour un contrôle détaillé sur qui a accès à quels ressources de l'application.
Le système utilise un modèle de contrôle d'accès basé sur les rôles (RBAC), où les utilisateurs sont assignés à des groupes et les droits d'accès sont accordés à ces groupes. Cela permet une gestion de l'accès efficace et sécurisée.

Gestion des groupes

Création d'un nouveau groupe

  1. Accéder à la section des groupes :
    • Ouvrez l'onglet Groups.
  2. Ajouter un groupe :
    • Cliquez sur le bouton Create Group.
    • Indiquez un nom descriptif et un marqueur.
    • Attribuez des droits d'accès initiaux.
attention

Dans un nouveau projet, un groupe Guest est toujours créé par défaut.

Héritage des droits d'accès

Dans l'onglet "Groupes", les groupes précédemment créés sont présentés de manière hiérarchique, le nouveau groupe créé peut être rattaché à un groupe déjà existant pour hériter des droits du groupe parent.

attention

Si le groupe parent a une restriction de chemin, et que la même restriction est écrasée dans le groupe enfant, la restriction finale sera celle du groupe enfant, mais seulement si l'option "Autorisation finale" n'est pas spécifiée dans le groupe parent.

Unique groupe dans la chaîne

La désignation d'un groupe n'est possible que si aucun groupe parent ou enfant n'est déjà sélectionné.

Modification des droits d'accès

L'onglet "Permissions" est clé pour l'édition des droits d'accès.

Regroupement des droits

Si vous avez précédemment spécifié un groupe parent pour l'héritage des droits, toutes les informations sur les accès établis seront placées dans le tableau en haut, l'édition des droits hérités est interdite.
Les droits incluant des exceptions et les droits non utilisés sont regroupés séparément dans le même tableau.

Gestion des droits d'accès

Création de droits d'accès

Pour commencer à créer un droit, cliquez sur le bouton "Créer un droit" dans l'onglet "Permissions".

Un droit d'accès est composé d'une combinaison de méthode et de chemin.

remove
  1. Créer un ensemble minimal de permissions :
    • Cette option permet de minimiser la tâche de création de droits en générant l'ensemble minimal nécessaire de permissions.
attention

Disponible uniquement s'il n'y a pas de permissions précédemment établies.

  1. Définir des restrictions sur la délivrance des données :
    • L'option est applicable uniquement lorsque "Créer un ensemble minimal de permissions" est sélectionné, elle impose une restriction sur la délivrance des données (10 enregistrements).
  2. Section API :
    • Paramètre obligatoire, si vous créez un nouvel accès, indique le chemin pour sélectionner les permissions.
  3. Chemin :
    • La sélection est disponible uniquement après avoir choisi la section API, précise le chemin pour établir les droits.
  4. Nom :
    • Champ obligatoire pour le nom du droit.
  5. Tableau "Permissions" :
    • Le tableau représente un choix parmi les méthodes HTTP pour le chemin spécifié, avec indication des options "sans restrictions" et "avec restriction du nombre d'enregistrements".
attention

Pour tout chemin dans le tableau, 4 méthodes sont toujours indiquées : GET, POST, PUT, DELETE.

  1. Conditions supplémentaires Ces conditions apparaissent non pas pour tous les chemins, mais uniquement pour les "listes" et permettent de configurer des exceptions sur les documents obtenus.

    • Par exemple, si vous devez fournir un accès à toutes les pages, mais faire une exception, vous pouvez cliquer sur le bouton "Sélectionnez les données que vous souhaitez exclure". Dans la fenêtre supplémentaire qui s'ouvre, vous pouvez choisir les données pour lesquelles l'accès doit être restreint. Par exemple, pour la section API - pages, une liste hiérarchique des pages sera affichée, pour la section des attributs - respectivement les attributs.

    Liste des chemins disponibles avec conditions supplémentaires :

    • /api/content/admins/all
    • /api/content/attributes-sets
    • /api/content/attributes-sets/{marker}/attributes
    • /api/content/pages
    • /api/content/blocks
    • /api/content/forms
    • /api/content/events/subscriptions
    • /api/content/orders-storage
    • /api/content/product-statuses
    • /api/content/templates
    • /api/content/template-previews
    • /api/content/integration-collections

    Après avoir sélectionné les données à exclure, deux nouvelles options apparaîtront : "Exclure" - l'option indique que les données sélectionnées doivent être exclues. "Droit final" - ce droit n'est pas hérité dans toute la chaîne de groupes enfants (l'option devient disponible uniquement si l'option "Exclure" est sélectionnée).

attention

La sélection des conditions supplémentaires dépend du chemin choisi et n'est pas toujours disponible. Lorsqu'une telle sélection est possible, elle est marquée par "Exceptions disponibles pour sélection".

exceptions_marker

Liste des chemins disponibles pour la configuration

Par défaut, les nouveaux droits sont placés dans la section "Droits non utilisés", pour les activer, il suffit de sélectionner en cochant la case à gauche du nom.

Pour ouvrir l'éditeur, utilisez le bouton edit

Pour supprimer, utilisez remove

Compréhension des droits d'accès

Les droits d'accès sont des réglages détaillés qui définissent quelles actions un groupe peut effectuer sur des ressources spécifiques. Ils sont organisés par sections API et peuvent être précisés davantage à l'aide de conditions.

Recherche de droits dans le tableau

La recherche des droits nécessaires dans le tableau se fait en saisissant du texte dans le champ "Recherche de droits", en sélectionnant les sections API nécessaires dans le sélecteur et en choisissant l'option "Sélectionner les droits non utilisés".

Droits finaux

L'onglet des droits finaux est un tableau informatif avec filtrage par sections API pour simplifier la recherche.

Exemple : restriction d'accès aux produits

  • Section API : products
  • Droits d'accès :
    • Lecture (Read): Oui
    • Ajout (Add): Non
    • Édition (Edit): Non
    • Suppression (Delete): Non

Intégration avec l'API

Le système fournit une API pour la gestion programmatique des utilisateurs, des groupes et des droits d'accès. Voici des exemples d'opérations typiques.

Exemple de requête

/api/content/attributes-sets/product_1/attributes

Réponse, si l'autorisation est sans token (groupe Invité) :

[
{
"type": "image",
"value": {},
"marker": "image",
"position": 1,
"listTitles": [],
"validators": {
"requiredValidator": {
"strict": true
}
},
"localizeInfos": {
"title": "image"
},
"additionalFields": []
},
{
"type": "textWithHeader",
"value": {},
"marker": "textheader",
"position": 4,
"listTitles": [],
"validators": {},
"localizeInfos": {
"title": "text header"
},
"additionalFields": []
},
{
"type": "image",
"value": {},
"marker": "image1",
"position": 18,
"listTitles": [],
"validators": {
"sizeInPixelsValidator": {
"maxX": 0,
"maxY": 0
},
"checkingFilesValidator": {
"maxUnits": "kb",
"maxValue": 0,
"minUnits": "mb",
"minValue": 0,
"extensions": []
}
},
"localizeInfos": {
"title": "image"
},
"additionalFields": []
}
]

Réponse, avec autorisation, où tous les champs d'attribut sont autorisés :

[
{
"type": "image",
"value": {},
"marker": "image",
"position": 1,
"listTitles": [],
"validators": {
"requiredValidator": {
"strict": true
}
},
"localizeInfos": {
"title": "image"
},
"additionalFields": []
},
{
"type": "textWithHeader",
"value": {},
"marker": "textheader",
"position": 4,
"listTitles": [],
"validators": {},
"localizeInfos": {
"title": "text header"
},
"additionalFields": []
},
{
"type": "image",
"value": {},
"marker": "image1",
"position": 18,
"listTitles": [],
"validators": {
"sizeInPixelsValidator": {
"maxX": 0,
"maxY": 0
},
"checkingFilesValidator": {
"maxUnits": "kb",
"maxValue": 0,
"minUnits": "mb",
"minValue": 0,
"extensions": []
}
},
"localizeInfos": {
"title": "image"
},
"additionalFields": []
},
{
"type": "float",
"value": {},
"marker": "price",
"position": 19,
"listTitles": [],
"validators": {},
"localizeInfos": {
"title": "price"
},
"additionalFields": []
}
]

Comme nous le voyons, l'utilisateur autorisé a reçu un champ supplémentaire "price".