[agenda] 2 commits

spip-contrib-extensions/agenda | 2 commits

Par Glop, le 7 mars 2022 à 17h49min :

Instituer un événement demande de pouvoir instituer l’article associé avec le même statut.

Par défaut, l’autorisation autoriser('instituer', 'evenement', …)
appelle autoriser('modifier', 'evenement', …), qui à son tour
appelle autoriser('modifier', 'article', …) pour l’article associé
à l’événement en question, afin de vérifier que l’on est bien autorisé·e
à modifier cet article.

Cependant, lorsque l’on cherche à instituer un événement, ce n’est
pas autoriser('modifier', 'article', …) qu’il faut vérifier, mais
autoriser('instituer', 'article', …), avec le statut à modifier
dans les $options.

C’est déjà ce que fait evenement_instituer() (voir lignes 392 et 393
de action/editer_evenement.php), mais ce n’est par contre pas pris
en compte par autoriser_evenement_instituer_dist().

Par conséquent, si on a le droit d’éditer l’article lié à l’événement
(mais pas de changer le statut de cet article), le formulaire
instituer_objet et la puce_statut affichent la possibilité de
changer le statut de l’événement. Si l’on clique dessus, cela est
heureusement refusé par l’action editer_evenement, mais tant qu’à
faire, autant éviter que l’option ne soit présentée.

Ce patch rajoute donc un appel à autoriser('instituer', 'article', …)
dans autoriser_evenement_instituer_dist(), en plus de la vérification
de autoriser('modifier', 'evenement', …). C’est un peu ceinture et
bretelles, mais ça fait le boulot :slight_smile:

Modifié
agenda_autoriser.php

Détails : Instituer un événement demande de pouvoir instituer l'article associé avec le même statut. · 047f9ebb81 - agenda - SPIP on GIT

==============================
Par Glop, le 7 mars 2022 à 21h57min :

Utiliser l’autorisation adaptée dans ‹ evenement_instituer() ›.

Plutôt que de reposer sur autoriser('instituer', 'article', …), la
fonction evenement_instituer() doit faire appel à l’autorisation
canonique pour instituer un événement :
autoriser('instituer', 'evenement', …).

Hormis en cas de surcharge des autorisations, cela devrait normalement
être équivalent :

  • l’appel à autoriser('instituer', 'article', $id_parent, …)
    est désormais effectué par autoriser_evenement_instituer_dist()
    (depuis d10a325587) ;
  • la condition $sa=='publie' or $s!=='publie' est aussi vérifiée
    par autoriser_evenement_instituer_dist().

Merci à RastaPopoulos pour
la suggestion !

Modifié
action/editer_evenement.php

Détails : Utiliser l'autorisation adaptée dans 'evenement_instituer()'. · 2090f942db - agenda - SPIP on GIT