commit 1553b4ed647b875f20d7218e25a7e3f1b009ad2b
parent 2b35f7240ff8e9957db15528e46964ad8d6b5dd2
Author: Georges Dupéron <jahvascriptmaniac+github@free.fr>
Date: Mon, 2 Aug 2010 06:59:11 +0200
Divers bugs.
Diffstat:
4 files changed, 30 insertions(+), 8 deletions(-)
diff --git a/__cms__/chemin/chemin.php b/__cms__/chemin/chemin.php
@@ -2,6 +2,9 @@
require_once(dirname(__FILE__) . "/path.php");
+define('CHEMIN_JOKER_MULTI_SEGMENTS', '**');
+define('CHEMIN_JOKER_SEGMENT', '*');
+
class Chemin {
// Si $chemin est un tableau, chaque segment doit vérifier les invariants de nettoyer_segment.
public function __construct($chemin) {
@@ -13,7 +16,8 @@ class Chemin {
}
public function correspond($motif) {
- // motif : liste de segments, pouvant être un chaîne ou un jocker
+ $motif = $motif->segments;
+ // motif : liste de segments pouvant être un chaîne ou un jocker
// correspondant à "n'importe quelle chaîne pour ce segment". Le
// dernier segment peut être le joker "n'importe quelle suite de
// segments (le motif doit donc correspondre à un préfixe du chemin
diff --git a/__cms__/cms.php b/__cms__/cms.php
@@ -17,7 +17,8 @@ class CMS {
$chemin = new Chemin($chemin_str);
$noms_params = Modules::get_liste_paramètres($chemin);
$noms_params[] = "action";
- // récupérer $noms_params dans $_GET, $_POST et $_FILE
+ $paramètres = array();
+ // récupérer $noms_params dans $_GET, $_POST et $_FILE ==> $paramètres
$action = $paramètres["action"];
Modules::action($chemin, $action, $paramètres);
}
diff --git a/__cms__/modules/modules.php b/__cms__/modules/modules.php
@@ -14,9 +14,10 @@ class Modules {
}
public static function get_liste_paramètres($chemin) {
+ $module = self::get_module($chemin);
+ if ($module === false) return false;
// TODO
- call_user_func(array(self::get_module($chemin), "get_liste_paramètres"));
- return ;
+ return call_user_func(array($module, "get_liste_paramètres"));;
}
}
diff --git a/__cms__/securite/permissions.php b/__cms__/securite/permissions.php
@@ -26,9 +26,9 @@ class Permissions {
// sinon on renvoie false
foreach (self::get_regles() as $r) {
- if ($chemin->correspond($r["chemin"])
- && self::action_correspond($action, $r["action"])
- && $groupe == $r["groupe"]) {
+ if ( self::chemin_correspond($chemin, $r["chemin"])
+ && self::action_correspond($action, $r["action"])
+ && self::groupe_correspond($groupe, $r["groupe"])) {
return $r["autorisation"];
}
}
@@ -36,6 +36,22 @@ class Permissions {
return false;
}
+ public static function chemin_correspond($chemin, $motif) {
+ $chemin->correspond($motif);
+ }
+
+ public static function action_correspond($action, $motif) {
+ if ($motif == '*') return true;
+ if ($action == $motif) return true;
+ return false;
+ }
+
+ public static function groupe_correspond($groupe, $motif) {
+ if ($motif == '*') return true;
+ if ($groupe == $motif) return true;
+ return false;
+ }
+
// TODO : d'abord set_nouvelles_regles, puis appliquer_nouvelles_regles.
public function set_regles($regles) {
// $regles est un tableau de quadruplets
@@ -70,7 +86,7 @@ class Permissions {
return false;
}
$regles[] = array(
- "chemin" => self::unescape_element_regle(new Chemin($r[0])),
+ "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")