Zobrazení jen přihlášeným

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

Zdravím,

mám jen takový začátečnický dotaz. Jak je lepší řešit zobrazení webu jen přihlášeným?

Napadají mě 2 metody, 1. v samotném .latte

{if $user->isLoggedIn()}
web
{else}
{control loginForm}

A nebo to resit v presenteru ve startup metode?

Predem dekuji za odpovedi.

besanek
Člen | 128
+
0
-

Nejlepší je abstraktní Secure presenter od kterého budou dědit všechny co chceš jen pro přihlášené.

public function startup()
{
	parent::startup();
	if (!$this->getUser()->isLoggedIn()) {
		$this->flashMessage('Přihlašte se, prosím.');
		$this->redirect('Sign:default');
	}
}
wicked
Člen | 290
+
0
-

Když budu rešit Backend site aplikace, narvu toto přímo do AdminBasePresenter Backendu.

Paklize budu resit Frontend, můžu to hodit zvlášť do SecurePresenter a od něj dědit, ale když budu chtít využít jen zobrazení částí webu pro přihlašené, udělám to tedy pres $user->isLoggedIn() přímo v .latte :-)

Chápu dobře a je to vhodné řešení?

besanek
Člen | 128
+
0
-

Pokud jen nepodstatnou část stránky (např. odesílání komentářů), tak určitě v šabloně. Samozřejmě, pokud se skrývá odkaz nebo formulář, tak navíc řešit i v PHP při obsluze.

wicked
Člen | 290
+
0
-

Ten mam problem … hodil jsem toto do basepresenteru

public function startup()
    {
        parent::startup();
        if (!$this->getUser()->isLoggedIn()) {
            $this->flashMessage('Přihlašte se, prosím.');
            $this->redirect('Login:default');
        }
    }

Ale kdyz chci zobrazit web, píše mě to error, že web obsahuje smyčku přesměrovaní … Co s tím?

enumag
Člen | 2118
+
0
-

Vykašli se na metodu startup a přidej anotaci @User(loggedIn) všem presenterům které mají být zabezpečené. Na tyhle kontroly slouží metoda checkRequirements, ne startup.

Editoval enumag (5. 10. 2013 19:17)

Quinix
Člen | 108
+
0
-

wicked napsal(a):

Ale kdyz chci zobrazit web, píše mě to error, že web obsahuje smyčku přesměrovaní … Co s tím?

LoginPresenter nesmí dědit od SecuredPresenteru…