Redirect na stránku loginu pokiaľ užívateľ nieje prihlásený

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Andurit
Člen | 131
+
0
-

Čaute,
chcel by som aby užívateľa automatickly rediretlo na stránku sign/in ak nieje prihlásený no akosi sa mi nedarí nájsť v dokumentácii ako to spraviť.

Jedine čo som našiel je jednoducha podmienka do latte ako nezobraziť časť prípadne celú stránku užívateľovi ktorý nieje prihlásený:

{if $user->loggedIn}

{else}

{/if}

čo mi veľmi nepomôže. Nakoľko je HTML separátne myslím, že by som to mal riešit v latte no možno sa mýlim Vedel by mi niekto poradiť?

Editoval Andurit (10. 11. 2014 23:04)

Šaman
Člen | 2666
+
+1
-

Tady se to řešilo i s ukázkou.

Andurit
Člen | 131
+
0
-

Vďaka za odpoveď, mna napadlo použiť len metódu ako:

public function redirectToLogin()
{
    $this->redirect('Sign:in');
}

A myslím, že v zásdae tento príklad je o tom istom, nie som si ale celkom istý ako to uplatniť následne v latte.

Skúsil som niečo ako:

{? $presenter->redirectToLogin(); }

Čo bohužil skončilo s Nette\Application\AbortException

Bolo by možné dať jednoduchý príklad s example code?

Thanks

Editoval Andurit (10. 11. 2014 23:28)

Šaman
Člen | 2666
+
0
-

A proč to cpeš do šablony? O tom, jestli se přesměruje, nebo ne, rozhoduje presenter. Ideálně v metodě startup(), viz ukázka v odkazu v odkazu.

Andurit
Člen | 131
+
0
-

Tak či tak to predsa neviem následne vyuźiť v latte nie? Alebo sa všetky presentry načítávajú naraz? Práve to použitie v tom latte je pre mna záhadou

Editoval Andurit (10. 11. 2014 23:39)

matto
Člen | 55
+
0
-

nepotrebujes to pouzit v latte. Daj to do startup metody presenteru, tam prebehne redirect a k vykreslovaniu sablony sa to ani len nedostane…

Xethilos
Člen | 19
+
0
-

Kazíš tím hodně MVC model, když provádíš redirect v šabloně. Navíc se ti zpomaluje aplikace, protože server musí doběhnout až k latte, aby se dozvědělo, že má jít jinam.

Editoval Xethilos (11. 11. 2014 6:53)

Andurit
Člen | 131
+
0
-

Takže ak tomu správne rozumiem, idealne je spraviť si další presenter tak ako to je v príklade a následne nový presenter extendovat base presentrom a týmto secure presentrom?

Šaman
Člen | 2666
+
0
-

Nepotřebuješ další Presenter. Dokonce to ani nemusíš dělat v metodě startup(). Stačí redirectovat v action metodě toho pohledu, který má být bez přihlášení nedostupný.
Pokud jsou to všechny pohledy nějakého presenteru, dá se to do startup (ta proběhne před každou akcí daného presenteru). A pokud by to byla celá zabezpečená sekce, řekněmež třeba AdminModule, pak se vyplatí vytvořit mu samostatný BasePresenter a kontrolu provádět v něm.