Nette\Security statické role
- spartan13
- Člen | 10
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í.