acl podle návodu – problem z odhlasenim
- Berry
- Začátečník | 70
zdar, mam problem s acl co je v tutorialu. Vse funguje jak ma, jen kdyz se chci odhlasit tak z hlavni stanky administrace se odhlasim automaticky a jsem presmerovan na prihlasovaci formular. Kdyz ale se chci odhlasit z nejaky podstranky, treba „Sprava uzivatelu“ tak ladenka krici
Nette\Application\BadRequestException #404
Page not found. Missing template '…/AdminModule/templates/Page/logout.latte'.
Prijde mi divne, ze chybi logout.latte kdyz z hlavni stranky administrace se jde odhlasit
- bojovyletoun
- Člen | 667
Prostě tam ta šablona chybí. K čemu je vlastně šablona logout? Nestačí jen v actionLogout dát redirect na třeba hlavní stránku a případně hodit flashmessage?
Pokud ale chceš extra stránku na odhlašování, tak možná vím kde je
problém – V odkazu voláš nejspíš {link logout} Což e aciton logout
aktuálního presenteru. Jenže Správa uživatelů má asi svůj presenter
takže se pak hledá neexisující
/AdminModule/templates/SpravaUzivatelu/logout.latte). Řešení je volat
{link HlavniStrankaAdministrace:logout}.
Teda
- toka
- Člen | 253
No, a nebo je možnost dát actionLogout
do
BasePresenter
, resp. např. Admin_BasePresenter
(záleží na individuálním pojmenování). Předpokládám totiž, že
všechny presentery administrace dědí od výše uvedeného
BasePresenteru
, takže pak může mít opravdu jen
{link logout}
. Nevidím v tom žádnou extra výhodu – možná
jen méně psaní v šabloně, ale fungovat to bude.
- Berry
- Začátečník | 70
Prave, ze tam sablona logout.latte zadna neni. Vse mam presne jak je v tutorialu https://doc.nette.org/…thentication
- srigi
- Nette Blogger | 558
No ono sablonu ale fakt neni treba, v DefaultPresenter::actionLogout() sa
predsa redirectuje na AuthPresenter::renderLogin(). Over si obycajnym dumpovanim
a die()
, ci sa ti tam ten kod dostane po kliknuti na logout a ci to
potom spravne redirectne.
Mne na lokale aplikacia z archivu bezi bezchybne.
- Berry
- Začátečník | 70
srigi napsal(a):
No ono sablonu ale fakt neni treba, v DefaultPresenter::actionLogout() sa predsa redirectuje na AuthPresenter::renderLogin(). Over si obycajnym dumpovanim a
die()
, ci sa ti tam ten kod dostane po kliknuti na logout a ci to potom spravne redirectne.Mne na lokale aplikacia z archivu bezi bezchybne.
Prave proto mi je divny, ze ladenka krici, ze chybi sablona. Problem je v tom, ze jsem zacatecni a nevim co po me chces :D
- bojovyletoun
- Člen | 667
odkaz na ohlášení je http://localhost/page/logout
. Jenže
v životním cyklu
aplikace se zkusí volat Page::actionLogout(), potom
Page::renderLogout() a potom se vypíše šablona
…/AdminModule/templates/Page/logout.latte
(to už se nezkouší).
Redirectnout musíš ručně –třeba– v actionLogout.
- Berry
- Začátečník | 70
toka napsal(a):
No, a nebo je možnost dát
actionLogout
doBasePresenter
, resp. např.Admin_BasePresenter
(záleží na individuálním pojmenování). Předpokládám totiž, že všechny presentery administrace dědí od výše uvedenéhoBasePresenteru
, takže pak může mít opravdu jen{link logout}
. Nevidím v tom žádnou extra výhodu – možná jen méně psaní v šabloně, ale fungovat to bude.
Tak jsem predal action logout z defaultpresenteru do basepresenteru a slape to. Tohle me nenapadlo.
- bojovyletoun
- Člen | 667
To sice funfuje, ale je to podle mě naprosto špatné řešení Takhle míchat Presentery. (Teď mě napadla poučka, že presentery mají být buď final nebo abstract, jenže nevím jak to se napasovat). Tedy Netvořit superpresentery- vyčlenit přihlašování a odhlašování do samotného presenteru.
Přinejmenším pak třeba se stane, že třeba půjde se přihlásit z víc presenterů. (bohužel mě teď nenapadá nějaký praktický argument) já bych se řídil tímto pravidlem: Když zavoláš tedy libovolný presenter dědící od Base, dává smysl ( a existuje pro to šablona) metoda actionLogin?
Kromě toho se to teď nepozná, ale pak to udělá z aplikace guláš a nikdo se v tom nevyzná.
Editoval bojovyletoun (14. 3. 2011 0:00)