X-Git-Url: http://git.polytechnique.org/?a=blobdiff_plain;ds=inline;f=classes%2Fplatal.php;h=e72fc0bf8c98877e71af0ec4905db2e14c570a22;hb=e480db84c867fa0d69e173be1ed174e8e5a643ae;hp=571619992bd96025a286bfe446966a8978c703fc;hpb=2b1ee50b0196216dbe4f37e3b039469d6003ca23;p=platal.git diff --git a/classes/platal.php b/classes/platal.php index 5716199..e72fc0b 100644 --- a/classes/platal.php +++ b/classes/platal.php @@ -125,7 +125,7 @@ class Platal return null; } - protected function near_hook() + public function near_hook() { $hooks = array(); foreach ($this->__hooks as $hook=>$handler) { @@ -175,6 +175,15 @@ class Platal return null; } + protected function check_perms($perms) + { + if (!$perms) { // No perms, no check + return true; + } + $s_perms = S::v('perms'); + return $s_perms->hasFlagCombination($perms); + } + private function call_hook(PlatalPage &$page) { $hook = $this->find_hook(); @@ -196,8 +205,7 @@ class Platal return PL_FORBIDDEN; } } - - if (!empty($hook['perms']) && $hook['perms'] != S::v('perms')) { + if ($hook['auth'] != AUTH_PUBLIC && !$this->check_perms($hook['perms'])) { return PL_FORBIDDEN; } @@ -213,7 +221,7 @@ class Platal return $val; } - protected function force_login(PlatalPage &$page) + public function force_login(PlatalPage &$page) { if (S::logged()) { $page->changeTpl('core/password_prompt_logged.tpl');