Attention :

show_group_ticket != show_ticket.

Votre modification etait correcte sauf qu'il faut deja que l'utilisateur ait le droit de voir les ticket de ses groupes avant de tester l'appartenance au groupe.

     && (    !haveRight("show_group_ticket",1)
          || !in_array($job->fields["FK_group"],$_SESSION["glpigroups"])

Il y a un problème (bug) en fait uniquement dans le cas ou l'utilisateur depuis le central :
- n'avait pas le droit de voir les tickets (show_ticket)
- avait le droit de voir les tickets de ses groupes (show_group_ticket)

Mais on peut aussi l'ecrire dans l'autre sens ce n'est pas un problème.

Julien


Jean-Christophe Boggio a écrit :
Bonjour,

Pardonnez-moi, j'ai un peu de mal à lire cette ligne avec toutes
ces négations et je ne comprends pas votre ajout :

if (    !haveRight("show_ticket","1")
     && $job->fields["author"]!=$_SESSION["glpiID"]
     && $job->fields["assign"]!=$_SESSION["glpiID"]
     && (    !haveRight("show_group_ticket",1)
          || !in_array($job->fields["FK_group"],$_SESSION["glpigroups"])
        )
   )

Ce que je traduis par :

Si (    l'utilisateur ne peut pas voir tous les tickets
     et l'utilisateur n'est pas l'auteur
     et l'utilisateur n'a pas reçu la gestion du ticket
     et (    l'utilisateur ne peut pas voir tous les tickets
          ou l'utilisateur ne fait pas partie du groupe du ticket
        )
   )
alors print " "
sinon print "<a href..."

Il me semble que votre ajout est déjà contenu sur la première
ligne et, puisque les conditions sont séparées par des ET, cette
condition est redondante (et du coup une "fausse correction").

En écrivant le test à l'envers, on peut essayer d'y voir plus clair
(notez que je permute aussi, le "alors" et le "sinon") :

Si (    l'utilisateur peut voir tous les tickets
     ou l'utilisateur est l'auteur
     ou l'utilisateur a reçu la gestion du ticket
     ou (    l'utilisateur peut voir tous les tickets
          et l'utilisateur fait partie du groupe du ticket
        )
   )
alors print "<a href..."
sinon print "&nbsp;"


Ma modification mettait les 4 conditions au même niveau :

Si (    l'utilisateur ne peut pas voir tous les tickets
     et l'utilisateur n'est pas l'auteur
     et l'utilisateur n'a pas reçu la gestion du ticket
     et l'utilisateur ne fait pas partie du groupe du ticket
   )
alors print "&nbsp;"
sinon print "<a href..."

Ce qui, à l'envers s'écrit :

Si (    l'utilisateur peut voir tous les tickets
     ou l'utilisateur est l'auteur
     ou l'utilisateur a reçu la gestion du ticket
     ou l'utilisateur fait partie du groupe du ticket
   )
alors print "<a href..."
sinon print "&nbsp;"


Quel bug vouliez-vous corriger ? Pouvez-vous m'éclairer ?

Désolé de vous faire perdre du temps sur ce détail.

A bientôt,



_______________________________________________
Glpi-dev mailing list
[email protected]
https://mail.gna.org/listinfo/glpi-dev

Reply via email to