Champ commentaire pour les règles.

This commit is contained in:
Georges Dupéron 2010-08-02 23:44:40 +02:00
parent 963f8230d0
commit 472511e0a7
3 changed files with 15 additions and 13 deletions

View File

@ -1,4 +1,3 @@
Possibilité d'avoir un commentaire à la fin de chaque ligne des règles.
Sécurité : les noms de propriétés passés à stockage ne doivent pas
contenir de '/' (doivent valider "nettoyer_segment()".
Renomer SystèmeFichiers : seuls les modules ont deux bosses dans leur CamelCase

View File

@ -1,8 +1,9 @@
/**|*|Administrateurs|oui
/admin/**|*|Administrateurs|oui
/admin/**|*|*|non
/forum/|nouvelle_page|Utilisateurs|oui
/forum/*|nouvelle_page|Utilisateurs|oui
/galerie/**|*|Utilisateurs|oui
/galerie/**|*|Anonymes|non
/**|get_prop|Anonymes|oui
/**|*|Administrateurs|oui|Les administrateurs ont tous les droits
/admin/**|*|Administrateurs|oui|Les administrateurs peuvent administer (redondant avec la règle ci-dessus).
/admin/**|*|*|non|Les non-administrateur n'ont pas accès à la section "admin".
/forum/|nouvelle_page|Utilisateurs|oui|Les utilisateurs peuvent créer de nouveaux sujets de discussion dans le forum.
/forum/*|nouvelle_page|Utilisateurs|oui|Les utilisateurs peuvent créer des messages dans les sujets de discussion.
/forum/*/*|set_prop|Propriétaire|oui|L'auteur d'un message peut en définir le contenu (pas les autres, ce n'est pas un wiki).
/galerie/**|get_prop|Utilisateurs|oui|Les utilisateurs peuvent consulter la galerie.
/galerie/**|*|Anonymes|non|Mais le reste du monde ne peut pas voir la galerie (photos privées par ex.)
/**|get_prop|Anonymes|oui|Le reste du monde peut consulter le site.

View File

@ -63,6 +63,7 @@ class Permissions {
$str_regles .= '|' . self::escape_element_regle($r["action"]);
$str_regles .= '|' . self::escape_element_regle($r["groupe"]);
$str_regles .= '|' . ($r["autorisation"] ? "oui" : "non");
$str_regles .= '|' . self::escape_element_regle($r["commentaire"]);
$str_regles .= "\n"; // TODO vérifier que la séquence d'échappement est bien comprise.
}
@ -70,8 +71,8 @@ class Permissions {
}
public function get_regles() {
// Renvoie un tableau de quadruplets
// (chemin, action, groupe, autorisation).
// Renvoie un tableau de quintuplets
// (chemin, action, groupe, autorisation, commentaire).
// ou false si erreur.
$str_regles = Stockage::get_prop(self::singleton(), "regles", true); // true => forcer permissions.
@ -82,14 +83,15 @@ class Permissions {
// TODO : ignorer les lignes vides !
foreach (explode("\n", $str_regles) as $k => $v) {
$r = explode('|',$v);
if (count($r) != 4) {
if (count($r) != 5) {
return false;
}
$regles[] = array(
"chemin" => new Chemin(self::unescape_element_regle($r[0])),
"action" => self::unescape_element_regle($r[1]),
"groupe" => self::unescape_element_regle($r[2]),
"autorisation" => ($r[3] == "oui")
"autorisation" => ($r[3] == "oui"),
"commentaire" => self::unescape_element_regle($r[4]);
);
}
return $regles;