Pat a écrit :
Bon, en faisant quelques recherches supplémentaires, je m'aperçois que le sujet des autorisations est un vaste et délicat sujet.
Qu'on m'arrête tout de suite si mon propos est stérile...
Le fonction autoriser_defaut() ne devrait être appelée qu'en dernier ressort, si aucune des autorisations appelées n'a été spécifiquement définie.
et c'est normalement le cas
Actuellement, elle n'autorise que les Admins non restreints, ce qui offre une sécurité finalement : vaut mieux ne pas autoriser à n'importe qui, par défaut.
oui, c'est l'idée
Je propose un patch qui permet la propagation des autorisations, de la plus générale à la plus fine, sachant que autoriser_defaut() n'est appelée qu'en dernier ressort. Les _dist évidemment, restent intimement liées aux non _dist.
et normalement c'est le cas
Donc, pour que l'autorisation 'faire' 'qqchose' soit donnée, il faudrait que :
1. l'autorisation de 'faire' soit positive (ou que la fonction
associée ne soit pas trouvée)
2. puis, idem pour celle de 'qqchose',
3. et enfin, idem pour celle de 'faire' 'qqchose'
pas sur de comprendre, mais du coup, en regardant le code de autoriser_dist, j'avoue que je ne suis pas fan de l'ordre de selection des fonctions, du moins entre fonctions dist et non-dist:
$fonctions = $type
? array (
'autoriser_'.$type.'_'.$faire,
'autoriser_'.$type,
'autoriser_'.$faire,
'autoriser_defaut',
'autoriser_'.$type.'_'.$faire.'_dist',
'autoriser_'.$type.'_dist',
'autoriser_'.$faire.'_dist',
'autoriser_defaut_dist'
)
: array (
'autoriser_'.$faire,
'autoriser_defaut',
'autoriser_'.$faire.'_dist',
'autoriser_defaut_dist'
);
ca me paraitrait quand meme plus logique de faire :
$fonctions = $type
? array (
'autoriser_'.$type.'_'.$faire,
'autoriser_'.$type.'_'.$faire.'_dist',
'autoriser_'.$faire,
'autoriser_'.$faire.'_dist',
'autoriser_'.$type,
'autoriser_'.$type.'_dist',
'autoriser_defaut',
'autoriser_defaut_dist'
)
: array (
'autoriser_'.$faire,
'autoriser_'.$faire.'_dist',
'autoriser_defaut',
'autoriser_defaut_dist'
);
quand je surcharge une fonction en mettant ma fonction "non-dist", je ne m'attend pas à péter toute la chaine d'autorisation...
mes 2 sous.
Stephane