r9626 - in spip/ecrire: exec inc

Author: esj@rezo.net
Date: 2007-06-30 09:08:15 +0200 (sam, 30 jun 2007)
New Revision: 9626

Log:
Poursuite de l'utilisation systématique de la fonction autoriser. Le cas publierdansrubrique admet un numero de rubrique vide, ce qui spécifie alors tous les admins. Un coup de #877 au passage (état: 872 / 478 / 1294), et rappatriement des _request dans les fichiers exec/*: les inc/* ne doivent pas en contenir si on veut en faire des fonctions réutilisables ailleurs.

Modified:
   spip/ecrire/exec/auteur_infos.php
   spip/ecrire/inc/auteur_infos.php
   spip/ecrire/inc/autoriser.php
   spip/ecrire/inc/chercher_rubrique.php
   spip/ecrire/inc/instituer_auteur.php

Details: http://trac.rezo.net/trac/spip/changeset/9626

Poursuite de l'utilisation systématique de la fonction autoriser. Le cas publierdansrubrique admet un numero de rubrique vide, ce qui spécifie alors tous les admins. Un coup de #877 au passage (état: 872 / 478 / 1294), et rappatriement des _request dans les fichiers exec/*: les inc/* ne doivent pas en contenir si on veut en faire des fonctions réutilisables ailleurs.
Details: http://trac.rezo.net/trac/spip/changeset/9626

De nouveau ça me paraît douteux : autoriser (publierdans, rubrique, 0)
peut avoir deux significations : soit "l'auteur peut publier dans une
rubrique" soit "l'auteur peut publier dans n'importe quelle rubrique"
; à mon sens il serait plus logique que ça signifie "publier dans
n'importe quelle rubrique", c-à-d l'inverse de ton choix.

Je pense que dans cette API il ne faut laisser aucune place au flou ;
et ne pas hésiter à créer un autoriser supplémentaire juste pour que
ce soit plus précis.

-- Fil

Le 30 juin 07 à 13:41, Fil a écrit :

autoriser (publierdans, rubrique, 0)
peut avoir deux significations : soit "l'auteur peut publier dans une
rubrique" soit "l'auteur peut publier dans n'importe quelle rubrique"
; à mon sens il serait plus logique que ça signifie "publier dans
n'importe quelle rubrique", c-à-d l'inverse de ton choix.

Bref, 0 est-il existentiel ou universel ? Arbitraire. Mais je vais me battre pour ça, modifie si tu veux.

Committo,Ergo:Sum

Bref, 0 est-il existentiel ou universel ? Arbitraire. Mais je vais me
battre pour ça, modifie si tu veux.

La question n'est pas de se battre : je discute pour que les choix
soient explicités.

En l'occurrence, que cherche-t-on à vérifier comme *autorisation* à
cet endroit ?

Quand je lis le code je suis perplexe :

41 // Prepare le bloc des rubriques restreintes ;
42 // si l'auteur n'est pas admin, on le cache
43 $vis = autoriser('publierdans','rubrique') ? '' : "
style='display: none'";
44 if ($menu_restreints = choix_rubriques_admin_restreint($auteur))
45 $res .= "<div id='$ancre-aff'$vis>"
46 . $menu_restreints
47 . "</div>";

Pourquoi cacher le menu ? Il faudrait ne pas le mettre dans le html
(ni a fortiori le calculer).

Et je pense que ce qu'on devrait tester ici c'est autoriser(modifier,
auteur, $auteur, null, options=> restreintes)). Isn't it?

-- Fil

Le 30 juin 07 à 14:12, Fil a écrit :

Quand je lis le code je suis perplexe :

41 // Prepare le bloc des rubriques restreintes ;
42 // si l'auteur n'est pas admin, on le cache

Sauf erreur, ça c'est toi qui l'a écrit :wink:

Committo,Ergo:Sum

> 41 // Prepare le bloc des rubriques restreintes ;
> 42 // si l'auteur n'est pas admin, on le cache

Sauf erreur, ça c'est toi qui l'a écrit :wink:

C'est possible, et d'ailleurs on s'en fout.

Mais ne t'inquiète pas de mes remarques : j'ai noté ça dans les choses
à faire quand j'aurai du temps, et si tu laisses en l'état je
corrigerai à ma façon. Je préfère quand même demander tout de suite,
histoire d'être sûr qu'il n'y a pas un élément que j'aurais manqué.

-- Fil

Le 30 juin 07 à 14:36, Fil a écrit :

Mais ne t'inquiète pas de mes remarques : j'ai noté ça dans les choses
à faire quand j'aurai du temps, et si tu laisses en l'état je
corrigerai à ma façon. Je préfère quand même demander tout de suite,
histoire d'être sûr qu'il n'y a pas un élément que j'aurais manqué.

Ca roule. Tant qu'on y est, parlons de qqch de connexe qui symétriquement me donne l'impression que j'ai manqué qqch.
Je n'ai jamais compris la nécessité du cookie spip_admin: sa valeur se retrouve à partir du cookie spip_session avec un temps de calcul très marginal. On simplifirait le code en l'évacuant il me semble.

Committo,Ergo:Sum

Je n'ai jamais compris la nécessité du cookie spip_admin: sa valeur
se retrouve à partir du cookie spip_session avec un temps de calcul
très marginal. On simplifirait le code en l'évacuant il me semble.

C'est le cookie de correspondance ! Il sert à avoir les boutons,
qu'on soit encore connecté ou pas.

-- Fil

Le 30 juin 07 à 15:35, Fil a écrit :

Je n'ai jamais compris la nécessité du cookie spip_admin: sa valeur
se retrouve à partir du cookie spip_session avec un temps de calcul
très marginal. On simplifirait le code en l'évacuant il me semble.

C'est le cookie de correspondance ! Il sert à avoir les boutons,
qu'on soit encore connecté ou pas.

Ah je vois. Cela dit il faudra bien finir par se connecter pour qu'ils servent à qqch, donc au final ça sert surtout à décider si on veut les boutons admin. Ca me semble relever des préférences, je trouve exagéré de traiter ça par un cookie spécial, ce qu'on ne fait pas pour les couleurs, la langue etc.

Committo,Ergo:Sum

Ah je vois. Cela dit il faudra bien finir par se connecter pour
qu'ils servent à qqch, donc au final ça sert surtout à décider si on
veut les boutons admin.

Euh, non : quand ta session a expiré, ces boutons te permettent de te
reconnecter sans aller chercher l'url ecrire/ ; j'utilise ça tout le
temps, c'est très pratique

Ca me semble relever des préférences, je
trouve exagéré de traiter ça par un cookie spécial, ce qu'on ne fait
pas pour les couleurs, la langue etc.

On le fait aussi pour la langue :slight_smile:

-- Fil

Le 30 juin 07 à 15:58, Fil a écrit :

Ah je vois. Cela dit il faudra bien finir par se connecter pour
qu'ils servent à qqch, donc au final ça sert surtout à décider si on
veut les boutons admin.

Euh, non : quand ta session a expiré, ces boutons te permettent de te
reconnecter sans aller chercher l'url ecrire/ ; j'utilise ça tout le
temps, c'est très pratique

Quand il n'a pas expiré aussi. Mais bon, de nouveau je ne vais pas me battre contre ça. Mettons que je n'ai rien dit.

Committo,Ergo:Sum

Quand il n'a pas expiré aussi

Et c'est pour ça qu'on lui donne une durée beaucoup plus longue.

-- Fil

Quand je lis le code je suis perplexe :

41 // Prepare le bloc des rubriques restreintes ;
42 // si l'auteur n'est pas admin, on le cache
43 $vis = autoriser('publierdans','rubrique') ? '' : "
style='display: none'";
44 if ($menu_restreints = choix_rubriques_admin_restreint($auteur))
45 $res .= "<div id='$ancre-aff'$vis>"
46 . $menu_restreints
47 . "</div>";

Pourquoi cacher le menu ?

OK j'ai retrouvé la logique du truc : on masque le menu si l'auteur
*qu'on veut modifier* n'est pas admin ; ainsi si on le passe admin on
peut révéler le menu qui permet de le passer admin restreint.

Donc la question c'est comment on peut savoir si l'auteur qu'on est en
train de modifier peut ou non être associé tout de suite à une
rubrique.

En l'occurrence le bon test est donc if ($statut == '0minirezo'), sauf
si on trouve une autre façon de l'exprimer.

-- Fil

Le 1 juil. 07 à 22:20, Fil a écrit :

Quand je lis le code je suis perplexe :

41 // Prepare le bloc des rubriques restreintes ;
42 // si l'auteur n'est pas admin, on le cache
43 $vis = autoriser('publierdans','rubrique') ? '' : "
style='display: none'";
44 if ($menu_restreints = choix_rubriques_admin_restreint($auteur))
45 $res .= "<div id='$ancre-aff'$vis>"
46 . $menu_restreints
47 . "</div>";

Pourquoi cacher le menu ?

OK j'ai retrouvé la logique du truc : on masque le menu si l'auteur
*qu'on veut modifier* n'est pas admin ; ainsi si on le passe admin on
peut révéler le menu qui permet de le passer admin restreint.

Donc la question c'est comment on peut savoir si l'auteur qu'on est en
train de modifier peut ou non être associé tout de suite à une
rubrique.

En l'occurrence le bon test est donc if ($statut == '0minirezo'), sauf
si on trouve une autre façon de l'exprimer.

Bah c'est autoriser_modifier_auteur non ?

Committo,Ergo:Sum

> En l'occurrence le bon test est donc if ($statut == '0minirezo'), sauf
> si on trouve une autre façon de l'exprimer.

Bah c'est autoriser_modifier_auteur non ?

Non, tu confonds sujet et objet là... on est déjà dans le cadre où le
visiteur de la page a l'autorisation de modifier la fiche de cet
auteur (qui n'est pas lui-même), on se demande seulement si l'auteur
en question est ou non admin (pour afficher tout de suite le menu de
sélection de rubriques pour le restreindre).

Mais j'ai une solution avec des define() qui permet d'étendre, et des
commentaires qui éviteront de refaire l'erreur.

-- Fil