diff --git a/__cms__/TODO b/__cms__/TODO index 6a2bf72..e264703 100644 --- a/__cms__/TODO +++ b/__cms__/TODO @@ -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 diff --git a/__cms__/modele/admin/permissions/__prop__regles b/__cms__/modele/admin/permissions/__prop__regles index 770690b..ceeb3c5 100644 --- a/__cms__/modele/admin/permissions/__prop__regles +++ b/__cms__/modele/admin/permissions/__prop__regles @@ -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 \ No newline at end of file +/**|*|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. \ No newline at end of file diff --git a/__cms__/securite/permissions.php b/__cms__/securite/permissions.php index 23ea253..128ea63 100644 --- a/__cms__/securite/permissions.php +++ b/__cms__/securite/permissions.php @@ -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;