ACL opakující se dotazy na oprávnění

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
loser
Člen | 6
+
0
-

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
+
0
-

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)