return null;
}
- protected function near_hook()
+ public function near_hook()
{
$hooks = array();
foreach ($this->__hooks as $hook=>$handler) {
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();
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;
}
return $val;
}
- protected function force_login(PlatalPage &$page)
+ public function force_login(PlatalPage &$page)
{
if (S::logged()) {
$page->changeTpl('core/password_prompt_logged.tpl');