Prístup ku komponentám – potrebný login
- Peppy
- Člen | 137
Ako mám prinútiť používateľa, aby nemal právo šahať na komponenty,
keď nie je prihlásený? To znamená, že mám login, fajn, funguje. Odhlásim
sa. Ale keď prejde na nejaký „pod“-presenter tak je akoby v systéme
znova. Ide o to, aby pri prístupe na tieto komponenty bol presmerovaný na
Login. Bohužiaľ, technika, ktorú používam teraz, mi príde neefektívna (do
každého presenteru, metódy renderDefault, písať:
if(!$this->user->isLoggedIn()) { ...
). Preto sa pýtam, ako
na to? Je nelogické to písať do BasePresentra (dedia to všetky presenteri,
aj LoginPresenter)… Implementácia Autorizátoru mi príde zbytočná, navyše
ide o prístup pár používateľov a taktiež ide asi o 6 presenterov…
- hAssassin
- Člen | 293
@Peppy > proc ti prijde nelogicky to davat do
BasePresenteru
? Mam to v nem v metode
beforeRender()
. Je fakt ze z neho dedi i
SignPresenter
(LoginPresenter
), ale to sem vyresil
jednoduse tak, ze BasePresenter
ma property
checkUser = true
a v SignPresenteru
ji zmenim na
false
a pokud je false
, presmerovani se neprovede,
cili testuju jen na jednom miste a vzdy spravne presmerovavam na
SignPresenter
, pokud potrebuju.
Editoval hAssassin (8. 8. 2011 21:56)
- uestla
- Backer | 799
Já bych zase doporučil jednoduchý ACL o 2 rolích (příklad),
guest
– nepřihlášenuser
– přihlášen, dědí od roleguest
– u authenticatoru nezapomeň vracet Identity s touto rolí
presenterech a privilegiích.
Ve startupu BasePresenteru pak nastavit automatickou kontrolu (příklad – konkrétně 5. kód v dané sekci).
Přičemž bych nezapomněl na oblíbený nešvar, a sice zakázat přihlášenému přístup na přihlašovací stránku, něco jako:
// uvnitř ACL konstruktoru
$this->deny('user', 'Login', 'login');