[spip-dev] fonction autoriser & statut d'article.

Bonjour,

Je souhaitais ajouter au plugin Autorité la possibilité de dire "qui peut publier un article ?" avec pour réponse le webmestre, admin complet, admin restreint ou l'auteur...

A un moment j'ai cru que autoriser_rubrique_publierdans() suffisait, mais le terme "publier" est plus large que le simple fait de pouvoir passer le statut d'un article à "publier". Par exemple autoriser_modifier_article() renvoie vrai lorsque autoriser_rubrique_publierdans() est vrai. Or, je voudrais pouvoir dire (c'est fictif) : un auteur à le droit de publier son article, mais pas de le modifier après...

Dans mon cas réel, je voudrais simplement pouvoir dire "seuls les administrateurs généraux ont le droit de publication"... mais tant qu'à faire, pourquoi les rédacteurs ne le pourraient-ils pas eux aussi dans certains contextes ?

Est-ce qu'une nouvelle autorisation comme autoriser_instituer() et autoriser_instituer_article() n'aurait pas leur place quelque part ?

Il est fort possible aussi que je ne connaisse pas toutes les prouesses de autoriser() et qu'il existe une autre solution à ce petit ennui.

MM.

Je souhaitais ajouter au plugin Autorité la possibilité de dire "qui
peut publier un article ?" avec pour réponse le webmestre, admin
complet, admin restreint ou l'auteur...

OK

A un moment j'ai cru que autoriser_rubrique_publierdans() suffisait,
mais le terme "publier" est plus large que le simple fait de pouvoir
passer le statut d'un article à "publier".

On pourrait passer une option sur le test de
autoriser('publierdans', 'rubrique', $id_rubrique)

ou comme tu le proposes créer un nouveau droit.

Par exemple
autoriser_modifier_article() renvoie vrai lorsque
autoriser_rubrique_publierdans() est vrai. Or, je voudrais pouvoir dire
(c'est fictif) : un auteur à le droit de publier son article, mais pas
de le modifier après...

Il n'est pas anormal que les droits par défauts aient un
fonctionnement en cascade sur des choses qui semblent logiques (si tu
peux publier, tu peux modifier, c'est "logique") ; si tu veux sortir
de cette logique, il faut parfois modifier plusieurs fonctions de
droits (dans le cas limite, il faudra même les redéfinir toutes).

Est-ce qu'une nouvelle autorisation comme autoriser_instituer() et
autoriser_instituer_article() n'aurait pas leur place quelque part ?

il faudra passer dans les options l'id_rubrique pour gagner du temps,
mais ça peut s'envisager. Le faire en cas pour tous les objets.

-- Fil

Fil a écrit :

Je souhaitais ajouter au plugin Autorité la possibilité de dire "qui
peut publier un article ?" avec pour réponse le webmestre, admin
complet, admin restreint ou l'auteur...

OK

Je viens de le faire, mais pas avec l'option 'le rédacteur'

La fonction autoriser_rubrique_publierdans() ne connait pas l'objet enfant qui l'appelle et ne peut pas savoir si le rédacteur est aussi un des auteurs...

On pourrait passer une option sur le test de
autoriser('publierdans', 'rubrique', $id_rubrique)

ou comme tu le proposes créer un nouveau droit.

Oui, il y a un argument $opt dans les fonctions d'autorisation, c'est peut être pour ce genre de choses :stuck_out_tongue: ?

Par exemple
autoriser_modifier_article() renvoie vrai lorsque
autoriser_rubrique_publierdans() est vrai. Or, je voudrais pouvoir dire
(c'est fictif) : un auteur à le droit de publier son article, mais pas
de le modifier après...

Il n'est pas anormal que les droits par défauts aient un
fonctionnement en cascade sur des choses qui semblent logiques (si tu
peux publier, tu peux modifier, c'est "logique") ; si tu veux sortir
de cette logique, il faut parfois modifier plusieurs fonctions de
droits (dans le cas limite, il faudra même les redéfinir toutes).

Oui, bien sûr, mais là, on n'a pas le choix pour l'instant car la fonction instituer_article (celle qui affiche la liste des statuts disponibles de l'article selon l'utilisateur) de inc/instituer_article.php appelle autoriser('publierdans', 'rubrique', $id_rubrique), sans notion de l'id de l'objet proposé à publication (on ne peut donc pas autoriser le rédacteur à publier son article)

Est-ce qu'une nouvelle autorisation comme autoriser_instituer() et
autoriser_instituer_article() n'aurait pas leur place quelque part ?

il faudra passer dans les options l'id_rubrique pour gagner du temps,
mais ça peut s'envisager. Le faire en cas pour tous les objets.

Je suppose qu'il faudrait que : ecrire/inc/instituer_article.php & consoeurs executent, plutot que autoriser('publierdans', 'rubrique', $id_rubrique), un nouvel autoriser('instituer', 'article', $id_article) et si possible passer à cette autorisation le $id_rubrique (opt?) pour que ces fonctions aillent plus vite en appelant autoriser('publierdans', 'rubrique', $id_rubrique) ?

MM.

La fonction autoriser_rubrique_publierdans() ne connait pas l'objet
enfant qui l'appelle et ne peut pas savoir si le rédacteur est aussi un
des auteurs...

C'est compliqué parce que pour par exemple déplacer un article dans
une nouvelle rubrique, il faut les droits de "publierdans" la rubrique
cible.

> On pourrait passer une option sur le test de
> autoriser('publierdans', 'rubrique', $id_rubrique)
>
> ou comme tu le proposes créer un nouveau droit.

Oui, il y a un argument $opt dans les fonctions d'autorisation, c'est
peut être pour ce genre de choses :stuck_out_tongue: ?

ouiche

Oui, bien sûr, mais là, on n'a pas le choix pour l'instant car la
fonction instituer_article (celle qui affiche la liste des statuts
disponibles de l'article selon l'utilisateur) de
inc/instituer_article.php appelle autoriser('publierdans', 'rubrique',
$id_rubrique), sans notion de l'id de l'objet proposé à publication (on
ne peut donc pas autoriser le rédacteur à publier son article)

C'est sûr qu'il faut aussi patcher le core

>> Est-ce qu'une nouvelle autorisation comme autoriser_instituer() et
>> autoriser_instituer_article() n'aurait pas leur place quelque part ?
>
> il faudra passer dans les options l'id_rubrique pour gagner du temps,
> mais ça peut s'envisager. Le faire en cas pour tous les objets.

Un truc comme ça, mais "instituer" et "publier" ça n'a pas le même
sens. Il faudra être vraiment clair sur ce qu'on fait.

Je suppose qu'il faudrait que : ecrire/inc/instituer_article.php &
consoeurs executent, plutot que autoriser('publierdans', 'rubrique',
$id_rubrique), un nouvel autoriser('instituer', 'article', $id_article)
et si possible passer à cette autorisation le $id_rubrique (opt?) pour
que ces fonctions aillent plus vite en appelant autoriser('publierdans',
'rubrique', $id_rubrique) ?

voilà

-- Fil