Seznam všech rolí ze statického ACL
- Joacim
- Člen | 229
Jak získat nebo se dostat k
getRoles()
1. Potřebuji získat seznam všech rolí z
class AuthorizatorFactory {
/**
* @return \Nette\Security\IAuthorizator
*/
public function create() {
$permission = new Permission();
/* seznam uživatelských rolí */
$permission->addRole('guest'); // Defaulr user for cleared session exception
$permission->addRole('user');
$permission->addRole('admin');
/* seznam zdrojů */
$permission->addResource('Homepage');
$permission->addResource('Setup');
/* seznam pravidel oprávnění */
$permission->allow('user', array('Homepage'), 'list');
//...
/* admin má práva na všechno */
$permission->allow('admin', Permission::ALL, Permission::ALL);
return $permission;
}
}
V config neon mám
authorizatorFactory: App\Model\AuthorizatorFactory
authorizator: @authorizatorFactory::create
PS: role k přihlášenému uživateli dostanu bez problémů
2. Mohu do isAllowed posílat array ? nebo jen string ?
Editoval Joacim (15. 5. 2015 23:37)
- Joacim
- Člen | 229
1. Injecnout IAuthorizator tímto způsobem do mojí třídy
AutorizatorFactory pomocí konstruktoru ? nebo jsem to pochopil špatně ?
https://doc.nette.org/…dependencies
Jelikož se inicializuje přes config.neon a tak mě to trošku mate
Editoval Joacim (16. 5. 2015 13:56)
- Joacim
- Člen | 229
Takže service (authorizator) z config.neon mám předat do konstruktoru mojí třídy ?
class TestPresenter extends BasePresenter {
/** @var authorizator */
private $authorizator;
public function __construct(authorizator $service) {
$this->authorizator = $service;
}
public function renderDefault() {
$this->template->roles = $this->authorizator->getRoles();
}
}
Je to špatně, ale nevím jak to udělat jelikož jsem asi nepochopil systém DI
Ve třídě Authorizator factory mám jen metodu create a mám ji nastavenou v config.neon
Editoval Joacim (16. 5. 2015 18:32)