Jak je to s isAllowed()?
- RichardT
- Člen | 43
Zdravím,
chcel by som sa opýtať ako vlastne pracuje metóda isAllowed()
objektu Premission
.
V dokumentácii https://doc.nette.org/…thentication je napísané, že sa používa
$user->isAllowed($resource, $privilege);
keď to však chcem použiť ja, tak to po mne stále chce rolu. Rolu mám
samozrejme nastavenú v Identity, a po zavolaní
Environment::getUser()->Identity->getRoles()
sa mi korektne
vypíše napríklad
array(1) {
0 => string(7) "teacher"
}
A tu mi vyhadzuje výnimku
InvalidStateException: Role 'profile' does not exist.
if (!$this->acl->isAllowed('profile', 'show_others')) {
throw new BadRequestException('No premission to do this action.');
}
Ako teda vlastne mám použiť tú isAllowed()
? Ďakujem!
- vlki
- Člen | 218
Protože je to voláni isAllowed na různých objektech. Pokud metodu voláš na instanci Permission, tak musíš dodat i roli. Můžeš také, pro zjednodušení, volat isAllowed rovnou na instanci User.
Pokud chceš tedy volat na instanci třídy User, použij něco takového…
$user = Environment::getUser();
$user->isAllowed('resource', 'privilege');
V tomto případě ale musíš mít zaregistrovanou svou instanci třídy Permission jako službu Nette\Security\IAuthorizator.