Contrainte sur la visibilité d'une action

Bonjour,

J’ai une action et j’aimerais qu’elle ne soit visible que pour un certain groupe ou si l’utilisateur responsable est l’utilisateur actuel de la session.

Pour le groupe, j’ai mis une habilitation sur les groupes dont je souhaite pouvoir voir l’action et exécuter l’action.

Cependant, pour la deuxième condition si l’utilisateur responsable est l’utilisateur actuel de la session, j’ai créé une contrainte :


Cette contrainte ne fonctionne pas car je ne sais pas comment appeler la méthode getSessionInfo() et de plus get("rowId") retourne null quand j’utilise AppLog.info dans le code pour l’afficher.

Mes 2 questions sont les suivantes :

  • Comment appeler dans une contrainte l’ID utilisateur de la session actuel ?
  • Est-ce qu’il y aura des conflits entre l’habilitation de la fonction et la contrainte ou est-ce que les 2 font fonctionner de paire sans problème ?

Le session info ne sert que dans le cadre de l’ident/authent. Ensuite vous avez un grant à disposition. cf. Grant

Dans votre cas l’expression pourrait être écrite de cette manière : [VALUE:<field name>] == [USERID]

Cf. Simplicité® documentation/01-core/expressions pour plus d’info sur les expression

1 Like

Est-il possible qu’il y ait un conflit entre l’habilitation et la contrainte car l’action n’apparait pas, peut importe si j’écris dans la contrainte :
[VALUE:hrEmpSrvId.HrService_User_id] == [USERID]
[VALUE:hrEmpSrvId.HrService_User_id] != [USERID]

Alors que l’action apparait pour tous les utilisateurs qui appartiennent au groupe HR_SUPERADMIN renseigné dans l’habilitation.

Une contrainte ne s’exécute que pour les utilisateurs avec une responsabilité actives sur l’un des groupes associé à la contrainte (ou pour tous les utilisateurs si aucun groupe n’est associé à la contrainte).

Une action n’est accessible que pour les utilisateurs avec une responsabilité active sur au moins un groupe habilité à l’action.

Vos copies d’écran partielles ne permettent pas de savoir si vous avez paramétré des groupes au niveau de votre contrainte.

De manière générale, vos contraintes doivent impérativement être cohérentes avec les droits.

Par exemple si vous avez une contrainte qui s’exécute pour tout le monde mais qui porte sur une action qui n’est pas habilité à tout le monde ça doit sans doute avoir des effets de bord.

Avec vous checké les logs pour d’éventuels messages ?

C’est exactement ça, j’ai une contrainte sur une action qui s’exécute sur tous les utilisateurs mais l’action n’est habilité que au groupe HR_SUPERADMIN.

Si je supprime l’habilitation de l’action pour être cohérent avec la contrainte, il faut que je rajoute dans la contrainte :
[VALUE:hrEmpSrvId.HrService_User_id] == [USERID] || si le groupe de l'utilisateur est HR_SUPERADMIN.
une idée de comment écrire : si le groupe de l'utilisateur est HR_SUPERADMIN ?

C’est à ça que sert la notion de groupe associé à la contrainte (Constraint grant) dont je parle plus haut.

Exemple dans la démo:

Du coup, voici la solution pour laquelle j’ai opté:
[USERID] == [VALUE:hrEmpSrvId.HrService_User_id] || [HASRESP:HR_SUPERADMIN]

Tout fonctionne. Merci pour votre aide

Ca marche peut être mais ça ne correspond pas à ce que je vous ai indiqué qui est la “bonne” manière de faire selon moi = restreindre votre contrainte aux groupes concernés

[Message prédéfini]

Nous conseillons aux utilisateurs de marquer comme “solution” la réponse résolvant leur problématique pour permettre au support de mieux suivre les sujets non résolus, et à la communauté de trouver plus facilement la bonne réponse.

Vos messages indiquant une résolution du problème, nous avons réalisé cette opération pour vous.