acl podle návodu – problem z odhlasenim

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Berry
Začátečník | 70
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

Prave, ze tam sablona logout.latte zadna neni. Vse mam presne jak je v tutorialu https://doc.nette.org/…thentication

srigi
Nette Blogger | 558
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

toka napsal(a):

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.

Tak jsem predal action logout z defaultpresenteru do basepresenteru a slape to. Tohle me nenapadlo.

bojovyletoun
Člen | 667
+
0
-

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)