Bonjour,
j’ai un objet BCSIPerson héritier de User.
Dans ma configuration, j’ai défini un module par défaut pour la création d’un user via le système param : USER_RESP_DEFAULTMODULENAME
Lorsque je suis connectée et que je vais sur les différents écrans de création, le module est bien setté.
Maintenant j’ai un page publique dont une partie du code JS créé une personne :
var person = appSimplicite.getBusinessObject("BCSIPerson", "public_BCSIPerson");
person.resetFilters();
person.resetValues(true);
person.getForCreate(function() {
console.log("get for create");
console.log(person.item);
});
Mon utilisateur technique a bien les droits en création sur BCSIPerson ET User.
Lorsque je récupère ma person suite au get, toutes les valeurs par défaut sont bien settées (lang, active) mais pas le module.
Savez-vous pourquoi ? Est-ce parce que le paramètre est un paramètre système ?
Votre objet BCSIPerson doit implémenter le hook postValidate sans appeler celui de User (qui valorise le module à partir de ce param système).
Quand vous héritez d’un objet vous devez explicitement appeler les méthodes de l’objet parent quand vous les implémentez en surcharge sinon elles ne seront pas appelées, rien de specifique à Simplicité.
Merci pour votre retour mais nous ne surchargeons que les méthodes initCreate, initUpdate et preSave. Ces 3 méthodes appellent bien la méthode parent.
Comme dit dans mon post, nous avons 2 cas :
1 - création d’une personne via les IHM avec un compte habilité --> le module est bien indiqué
2- création d’une personne via un appel API depuis une page puiblique --> le module n’est pas renseigné
Dans les deux cas, on appelle bien le initCreate mais dans le 2 cas, le champs row_mdl_id est vide, d’où mon hypothèse : mon user public qui a le droit de créer un user n’a pas le droit de lire un paramètre système et donc ce champs n’est pas valué. Serait ce une hypothèse correcte et si oui, comment contourner le problème ?
Actuellement nous le faisons dans le initCreate si la valeur est vide, alors nous appelons le paramètre système en forçant l’usage au
Le param système est effectivement de type “private” donc non visible au user public et c’est bien le grant public qui fait le getParameter donc qui ne récupère rien.
On va changer la méthode pour que si le getParameter sur le grant courant (public ou autre) ne ramène rien on récupère la valeur pour le grant system admin
EDIT: non en fait c’est bien le grant system admin qui récupère la valeur du param dans le code de User…