Récupération et modification de la valeur d'un nouvel attribut dans l'objet User pour l'utilisateur actuel en javascript

Bonjour,

Je voulais savoir si en javascript dans Simplicité, il était possible de récupérer et potentiellement modifier la valeur d’un nouvel attribut stocké dans l’objet User pour l’utilisateur actuel
Par exemple, je suis un utilisateur, j’affiche une fenêtre, je voudrais vérifier un attribut booléen considéré en tant que flag dans l’objet User qui fait référence à moi, si le flag est à 1, j’affiche les informations, si il est à 0, je cache certaines informations

[Platform]
Status=OK
Version=4.0.P24
BuiltOn=2020-01-23 21:44 (revision 9f10821196041aeb04067b94ddee35ee46bdc79b)
DBPatchLevel=P24;9f10821196041aeb04067b94ddee35ee46bdc79b

Cordialement,
KWu

Je comprends de votre demande que vous avez customisé l’objet système User ?

Il n’est pas recommandé de faire ça mais plutôt de configurer un objet métier à vous qui hérite de l’objet système User

Mais de toute façon une autre bien meilleure approche est de “stocker” cette information utilisateur soit sous la forme d’un paramètre utilisateur soit sous la forme d’une responsabilité sur un groupe specifique.

Ainsi vous disposerez de cette information via des mécanismes standard : récupération de la valeur d’un parametre ou check d’appartenance à un groupe

S’agissant visiblement d’une problématique de “droits”, très clairement, j’opterais plutôt pour l’approche basée sur l’appartenance à un groupe. Cela vous permettra de mettre en place vos règles de gestion, contraintes et autres droits selon les mécanismes standards prévus à cet effet.

Bonjour,

Cela n’est pas vraiment un probleme de droit mais plutot d’une préférence utilisateur qui diffère au cas par cas et qui est sujet à des modifications récurrentes c’est pour ca que je voudrais mettre un flag au niveau de l’utilisateur actuel plutot que dans un groupe auquel il serait lié. Est-ce que le paramètre utilisateur répond à cette demande et semble optimal pour cela, sachant que tous les utilisateurs vont avoir besoin de leur propre paramètre personnel ? Si cela peut répondre à ma demande, auriez-vous un exemple pour appeler un paramètre utilisateur en javascript svp ?

Cordialement,
KWu

Oui le principe du paramètre utilisateur c’est la meilleur manière d’ajouter des informations (hors droits) individuellement à vos utilisateurs et surtout sans toucher au modèle système et en ayant facilement accès à cette information via les mécanismes standards de la plateforme ex: getGrant().getParameter("MY_PARAM") coté serveur

Pour pouvoir créer un paramètre utilisateur il faut avoir d’abord créé un paramètre système avec la valeur par défaut. Ensuite on peut surcharger ce paramètre système utilisateur par utilisateur (ceux qui n’ont pas de surcharge reculèrant la valeur par défaut)

NB: Il y a déjà plein de paramètres utilisateurs gérés en standard pour stocker des préférences, des historiques, etc.

Je ne suis pas bien sur d’avoir compris la doc ou bien il me manque une information parce que lorsque j’essaye getGrant().getParameter("MY_PARAM") celui-ci récupère le paramètre systeme meme si il existe un paramètre utilisateur portant le même nom.
Par ailleurs, est-il possible pour un utilisateur de modifier le paramètre utilisateur des autres utilisateurs ? Par exemple un admin qui devrait changer la valeur du paramètre pour tous les autres utilisateurs
Ou bien à l’opposé, est ce qu’un utilisateur peut créer et/ou supprimer les paramètres utilisateurs des autres utilisateurs afin que ceux-ci récupère la valeur par défaut stocké dans le paramètre systeme et se créer leur propre paramètre utilisateur (toujours avec le même nom)

Cordialement,
KWu

Il y a 2 questions ici:

  1. Les paramètres système sont chargés à l’ouverture de la session en procédant de la manière suivante:
    a) on charge les paramètres systèmes globaux
    b) on surcharge les valeurs des paramètres système globaux avec les paramètres utilisateur qui existent pour l’utilisateur courant
  • Quand on écrit: getGrant().getParameter("XXX") on récupère la valeur chargée à l’issue du processus ci-dessus
  • Quand on écrit: getGrant().getSystemParam("XXX") on récupère la valeur courante en base du paramètre système global
  • Quand on écrit: getGrant().getUserSystemParam("XXX") on récupère la valeur courante en base du paramètre utilisateur de l’utilisateur courant s’il existe (mais ça ne renvoie pas la valeur du paramètre système global)
  • Quand on écrit: getGrant().getUserSystemParam("mylogin", "XXX") on récupère la valeur courante en base du paramètre utilisateur de l’utilisateur “mylogin” s’il existe (mais ça ne renvoie pas la valeur du paramètre système global)
  1. Pour pouvoir créer/modifier/supprimer des paramètres système globaux (resp. utilisateur) il faut avoir les droits CRUD sur l’objet système SystemParam (resp. UserSysParam). Un utilisateur n’est pas sensé avoir ces droits donc il faut passer par le singleton system admin (Grant.getSystemAdmin())

C’est bien ce singleton qu’utilisent les méthodes:

  • getGrant().setSystemParam("XXX", "xxx"[, true|false, true|false]), cf.
  • getGrant().setUserSystemParam("XXX", "xxx", true|false), cf.
  • getGrant().setUserSystemParam("mylogin", "XXX", "xxx", true|false), cf.

NB: certaines des méthodes dont je parle ci-dessus n’existent qu’en version de dev actuelle, elles seront backportées en (pre)release dans les jours qui viennent