Modul len pre prihlasenych

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

Mam dva moduly: FrontModule a AdminModule.
Vsetky presentery v AdminModule (okrem SignPresenter kt. riesi login) by som chcel aby checkli ci je user prihlaseny a ak nie je → tak die() a presmeruj na login stranku.

Moj napad bol teda taky, ze BasePresenter bude obsahovat toto:

public function __construct(Nette\Database\Context $database, Nette\Security\User $user)
{
    $this->database = $database;
		$this->user = $user;

    $this->guestAction();
}
protected function guestAction()
{
    if (!$this->user->isLoggedIn()) {
        $this->redirect('Sign:in');
    }
}

To zabezpeci ze vsetky presentery v Admin module sa presmeruju na Sign:in.
Samotny Sign presenter ma potom prazdnu funkciu guestAction().

Bohuzial mi toto riesenie hadze nasledovny problem:
Unable to create link to other presenter, service PresenterFactory has not been set.

Viete mi poradit ako sa to mozno riesi lepsie? Alebo mam proste injectnut aj PresenterFactory?

David Matějka
Moderator | 6445
+
+2
-

kontrolu provadej v metode startup, pripadne v checkRequirements. V kontruktoru vzdy pouze uloz zavislosti, nic dalsiho nedelej.

A User si nemusis predavat, je k dispozici v $this->getUser()

badyto
Člen | 4
+
0
-

Super! diky moc!