Modul len pre prihlasenych
- badyto
- Člen | 4
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
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()