Jak řešíté kontrolu oprávnění?
- LM
- Člen | 206
Často se mi v metodách opakuje něco jako:
if (!Environment::getUser()->isAllowed($this->name, 'create')) {
throw new InvalidStateException();
}
Nakonec jsem do potomka třídi User přidal metodu needAllowed($resource, $privilege) která v případě kdy uživatel nemá oprávnění vyhodí vyjimku, nebo to řešíte jinak?
- phx
- Člen | 651
Uvedeny kus kodu bych dal do predka presenteru, s tim, ze bych to volal s parametrem (asi) role (create). Nebo tento parametr by se bral z atributu potomka. Ci tak nejak.
Jmeno predpokladam je prihlaseny uzivatel. Pokud ne tak dalsi parametr.
Osobne role zatim neresim, ale mam tridu Admin_BasePresenter, ktera je potomky vsechn zabezpecenych presenteru a ve startup si hlida zda je uzivatel prihlasen ci nikoliv. Pote v samotnych presenterech nic dalsiho k tomu nepisu. Protoze v pripade chyby (neprihlasen) se presmeruje na prihlaseni. Je to v jednom z prikladu v Nette.
- LM
- Člen | 206
$this->name je název presenteru, u mě presenter = resource a view = privilege. Ale možná by šlo při startu presenteru udělat něco jako:
if (!Environment::getUser()->isAllowed($this->name, $this->view)) {
throw new InvalidStateException();
}
a pak už se o to nestarat.
Editoval LM (13. 8. 2008 9:51)