pluginsGLPI / formcreator

GLPI Plugin Formcreator (DOWNLOAD : https://github.com/pluginsGLPI/formcreator/releases)
http://www.teclib-edition.com
GNU General Public License v3.0
173 stars 125 forks source link

En validation de formulaire, les conditions ne s'appliquent pas #2951

Closed SkoEdi closed 2 years ago

SkoEdi commented 2 years ago

Explication Un utilisateur (self-service) rempli un formulaire puis celui-ci est envoyé vers le validateur. Le validateur (self-service) veut editer la réponse mais lorsqu'il modifie la réponse, les champs ne se mettent pas à jour. Exemple: question 1 : réponse B -> champs B visible edition par le validateur question 1 : réponse A -> normalement champs A visible Le champs A ne devient visible que si le validateur est sur un profil avec plus de droits, de type admin.

Dans la console du navigateur, je vois les erreurs ci-dessous apparaitre une par une dés que je modifie une réponse. Même si elle ne déclenche aucune mise à jour de condition: image

D'avance merci

btry commented 2 years ago

Bonjour

Il y a un problème dans l'envoi ou l'interprétation des données liées à la mise à jour de visibilité des questions / sections.

Avez vous des erreurs sql ou php dans les logs de GLPI ?

btry commented 2 years ago

Egalement : est ce que le formulaire est accessible sans être authentifié ?

SkoEdi commented 2 years ago

Pas d'erreur dans les logs sql de GLPI, j'ai des erreurs php pour le plugin mais qui se génère pas quand je fais les modifications du formulaire Le formulaire est en private access car des champs LDAP sont utilisés

btry commented 2 years ago

Bonjour

Quelle version de Formcreator et de GLPI ?

SkoEdi commented 2 years ago

GLPI: 10.0.2 Formcreator: 2.13

btry commented 2 years ago

Bonjour

Ca fonctionne chez moi. Les requêtes HTTP sont bonnes et he peux afficher / masquer mes champs comme attendu. Appliquez le patch ci dessous et reproduisez le souci. Les requêtes HTTP en erreur devraient afficher un message permettant de savoir où ça échoue.

diff --git a/ajax/showfields.php b/ajax/showfields.php
index 2540f54e..6c4a1caf 100644
--- a/ajax/showfields.php
+++ b/ajax/showfields.php
@@ -39,6 +39,7 @@ if (!(new Plugin())->isActivated('formcreator')) {

 $formFk = PluginFormcreatorForm::getForeignKeyField();
 if (!isset($_POST[$formFk])) {
+   echo "bad form FK" . PHP_EOL;
    http_response_code(403);
    exit();
 }
@@ -47,10 +48,12 @@ $form = PluginFormcreatorCommon::getForm();
 $form->getFromDB((int) $_POST['plugin_formcreator_forms_id']);
 if (!Session::haveRight('entity', UPDATE) && ($form->isDeleted() || $form->fields['is_active'] == '0')) {
    http_response_code(403);
+   echo "not an admin or form deleted or form inactive" . PHP_EOL;
    exit();
 }

 if (!$form->canViewForRequest()) {
+   echo "canViewForRequest returned false" . PHP_EOL;
    http_response_code(403);
    exit();
 }

formcreator_debug_2951.txt

SkoEdi commented 2 years ago

Bonjour, J'ai une erreur lors du dry run image J'ai attaché le fichier showfield.php en format txt si besoin showfields.txt

btry commented 2 years ago

J'ai rajouté le patch sous forme de fichier .txt à mon commentaire précédent. Ca devrait résoudre un éventuel souci de copier / coller.

SkoEdi commented 2 years ago

patch appliqué mais plus moyen de reproduire le problème. j'ai eu un soucis avec des droits d'accès sur les fichiers GLPI et ça a du corriger le problème.

btry commented 2 years ago

Ok, alors annulez le patch. Il ne sert plus a rien désormais.