Meine Admin-Hub-Seite befindet sich derzeit im PagesController (namens admin). Sowohl nicht angemeldete Benutzer als auch Benutzer ohne Administratorrechte können jedoch auf diese Hub-Seite zugreifen, auch wenn sie nicht auf alle Verbindungen von diesem Hub aus zugreifen können.CakePHP 3 - Autorisierung für Seiten auf PagesController
Edit: Ich habe gerade festgestellt, dass es wahrscheinlich nicht funktioniert, weil "admin" keine Funktion im PagesController ist, sondern eher unter "display" fällt.
Mein AppController ist wie folgt:
public function initialize()
{
parent::initialize();
$this->loadComponent('RequestHandler');
$this->loadComponent('Flash');
$this->loadComponent('Auth',[
'authorize' => 'Controller',
]);
$this->Auth->allow(['display']);
}
public function beforeFilter(Event $event)
{
$this->Auth->deny(['admin']);
}
Mein PagesController wie folgt:
public function initialize()
{
parent::initialize();
$this->Auth->deny(['admin']);
}
public function isAuthorized($user)
{
if (in_array($this->request->action,['admin'])) {
return (bool)($user['role_id'] === 1); //where role_id = 1 refers to an admin
}
return parent::isAuthorized($user);
}
Hinweis nicht getestet worden, dass [ein anderes Bit der Dokumentation] (https://book.cakephp.org /3.0/en/controllers/components/security.html#usage) würde bedeuten, dass 'if ($ this-> request-> getParam ('admin')) 'der richtige Weg ist. Ich benutze kein Administrator-Routing, daher kann ich nicht einfach bestätigen, welches richtig ist oder ob beide akzeptabel sind. –