Nette\Security statické role

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

Dobrý den,
jak je např. ukázáno v tutoriálu u ověřování uživatelů (následující kód)

// může guest prohlížet články?
echo $acl->isAllowed('guest', 'article', 'view'); // TRUE
// může guest editovat články?
echo $acl->isAllowed('guest', 'article', 'edit'); // FALSE
// může guest hlasovat v anketách?
echo $acl->isAllowed('guest', 'poll', 'vote'); // TRUE
// může guest komentovat?
echo $acl->isAllowed('guest', 'comment', 'add'); // FALSE

vždy máme x zdrojů a ke každému zdroji určitý počet akcí, příjde mi poměrně nevhodné když chci psát podobné požadavky, jako jsou výše uvedeny přímo psát zdroje i akce přímo. Raději bych si vytvořil jednoduchou třídu:

class Resource(){
	const ARTICLE = 'article';
	const POLL = 'poll';
	const COMMENT = 'comment';
}

a následně volal spíše tyto konstanty ale u akcí se již dostávám k problému, že nevím jak podobný problém vyřešit, toto volání bych chtěl mít ideálně v jedné třídě, jenže statické metody pokud vím, nemohou vracet novou třídu (třídu výčtového typu = třídu s konstantami) abych mohl volat např.

SecurityDefinedClass::getPrivilege()::getComment()::DELETE;

Řešili jste někdo podobný problém, nebo zapisujete vždy celý string? Jde hlavně o pohodlí, že člověk nemusí hledat jména akcí a zdrojů a nemůže si tyto akce splést nebo zapsat neexistující.