Skip to main content

Vue d’ensemble

Un Team (Resource Group) peut porter des attributes : des listes de valeurs nommées, comme la marque ou le marché qu’il gère. Les rôles pointent alors vers un attribut au lieu de coder la valeur en dur : un seul rôle « Brand marketer » filtre chaque utilisateur sur les marques de ses propres Teams.
La réponse contient le Team mis à jour :
L’écriture des attributs utilise les permissions existantes sur les Teams : create pour POST, update pour PATCH. Consultez Authentification pour obtenir un access token.

Écrire des attributs

attributes est accepté par POST /v2/entities/resource-groups et PATCH /v2/entities/resource-groups/{id}.
Le provisionnement SCIM n’écrit ni n’efface jamais les attributs. Un Team synchronisé depuis votre fournisseur d’identité conserve les attributs définis via l’API.

Validation

La taille totale garde l’identité transmise entre les services Reelevant sous les limites des en-têtes HTTP. Une map invalide renvoie 400 avec l’error_code 5106 et la liste des erreurs :

Héritage

Un Team hérite des attributs de ses Teams parents. Les attributs effectifs d’un Team se résolvent ainsi :
  • Les clés du Team passent en premier, puis celles de ses parents, puis de ses grands-parents, en suivant parentIds.
  • Le Team le plus proche l’emporte pour chaque clé. La liste d’une clé est remplacée, jamais fusionnée avec celle d’un ancêtre.
  • Quand deux parents à la même distance définissent la même clé, le premier dans l’ordre de parentIds l’emporte.
  • La remontée s’arrête à un Team avec excludeFromAncestorInheritance: true : ses propres attributs s’appliquent, pas ceux de ses ancêtres. C’est la même règle que pour la portée des Teams.

Valeur pour un utilisateur

Un utilisateur membre de plusieurs Teams obtient, pour chaque clé, l’union des valeurs effectives de tous ses Teams. Un utilisateur d’Aurora France et de Solstice a brand: [Aurora, Solstice], locale: [fr_FR] et channel: [email]. Les valeurs sont résolues à la vérification de l’access token : une modification d’attribut s’applique à la requête suivante de l’utilisateur.

Utiliser les attributs dans les conditions de rôle

Une règle de rôle référence un attribut avec { "$resourceGroupAttribute": "<clé>" }. La référence est résolue avec les valeurs de l’utilisateur qui fait la requête. Créez ou modifiez le rôle avec POST /v2/entities/roles ou PATCH /v2/entities/roles/{id}.

Filtre de lignes Datasource (datasource_query)

Sur une règle query Datasource, le filtre de requête d’une condition datasource_query peut utiliser une référence au lieu d’une valeur statique : Un utilisateur sans l’attribut obtient $in: [] : aucune ligne ne correspond. $in n’est accepté ici qu’avec une référence $resourceGroupAttribute, et uniquement dans les conditions de rôle. Pour une liste de valeurs statiques, utilisez $eq avec un string[] (voir Opérateurs).

Contrainte d’option d’Object (datagraph_option)

Sur une règle read DatagraphEntity, une condition datagraph_option limite les valeurs que l’utilisateur peut passer à une option d’Object lorsqu’il l’interroge.
Les requêtes d’Object n’appliquent pas encore datagraph_option : l’application arrive dans une prochaine version de Datasources. Les rôles peuvent déjà stocker la condition, et AuthenticatedUser.getDatagraphOptionConstraints(entityId) de @reelevant-tech/permissions 6.7.0 renvoie les contraintes résolues.
La requête de l’utilisateur doit fixer l’option à l’une de ses valeurs. Un utilisateur sans l’attribut n’a aucune valeur autorisée. Quand plusieurs conditions s’appliquent au même Object, toutes doivent être respectées.
Les conditions de rôle s’appliquent aux requêtes des utilisateurs. Les exécutions de Workflow par le Runner ne sont pas filtrées.

Erreurs de validation

Les deux renvoient 400. L’index dans rules.0 désigne la règle rejetée.

Pages associées