ACL opakující se dotazy na oprávnění
- loser
- Člen | 6
Dobrý den,
rád bych chtěl využít ACL u své aplikace. Při pročítání
dokumentace jsem použití chápal, tak že si při autentizaci vytvořím
instanci Premission a nastavím vše potřebné. A pak se mi Nette samo
postará o to, kdo k jakým zdrojům má přístup. Tedy nebudu muset
u každého presenteru rozhodovat zda-li daný uživatel má právo či
nikoliv.
Z diskuzí jsem ale pochopil, že to tak tedy není?
Děkuji za objasnění.
- Jan Mikeš
- Člen | 771
Pokud chceš testovat práva na presenteru, řeší se to většinou
abstraktním předkem, například SecuredPresenterem
, kde práva
testuješ.
abstract class SecuredPresenter
{
protected function checkRequirements($element)
{
parent::checkRequirements($element);
if (!$this->user->isAllowed($this->name, $this->action)) {
$this->error(NULL, 403);
}
}
}
Při tomto zápise se používají jako resources názvy presenterů a privileges actions, setup by vypadal například takto (pro povolení všech akcí v AdminModule\HomepagePresenter:
/** @var Nette\Security\Permission $permission */
$permission->allow("users", "Admin:Homepage", $permission::ALL);
Způsobů je mnoho a toto je jen jeden z mála, permissions se dají dokonce nadefinovat v neonu.
Praktickou ukázku máš i zde: https://doc.nette.org/…thentication
Ačkoliv je návod starší, měl by fungovat a ukazuje právě statickou
definici ACL v configu.
Editoval Lexi (20. 10. 2016 10:58)