Ako overit v ktorom presenteri sa nachadzam
- buksy
- Člen | 22
Chcem presmerovat neprihlasenych uzivatelov, preto som do zakladnej triedy od ktorej dedia vsetky presentery pridal presmerovanie, problem je ze z nej dedi aj „Sign“ presenter a ten sa potom snazi presmerovat sam na seba a vytvori nekonecny cyklus, ako tomu zabranit?
<?php
namespace WebModule;
abstract class WebBasePresenter extends \BasePresenter
{
protected function startup()
{
parent::startup();
// Potreboval by som nieco ako !$this->getUser()->isLoggedIn() && $this->getName() != "Sign"
if (!$this->getUser()->isLoggedIn()) {
$this->redirect('Sign:in');
}
}
}
?>
- Michal Vyšinský
- Člen | 608
// Potreboval by som nieco ako !$this->getUser()->isLoggedIn() && $this->getName() != „Sign“
No a proč to tam nedáš?
Editoval CherryBoss (9. 9. 2013 15:09)
- David Matějka
- Moderator | 6445
doporucuju spis upravit strukturu presenteru, jak od sebe budou dedit – treba:
BasePresenter
SignPresenter
SecuredPresenter - az tady budes overovat prihlaseni
FooPresenter
BarPresenter
....
- duke
- Člen | 650
@enumag: Předpokládám, že případné
přesměrování na Sign presenter či jinam pak řešíš přes Application::onError
.
Je to tak?
- enumag
- Člen | 2118
@duke: Ne, to dělám v ErrorPresenteru na základě typu vyhozené exception.
Editoval enumag (9. 9. 2013 19:44)
- n.u.r.v.
- Člen | 485
Ahoj, a jak moc špatná je moje metoda, když mám SignPresenter, HomepagePresenter a další a v každém presenteru (kde je přihlášení vyžadováno) mám v metodě startup() toto:
public function startup() {
parent::startup();
if (!$this->getUser()->isLoggedIn()) {//pokud není uživatel přihlášen
$this->redirect('Sign:in');
}
....
....
}
A naopak v SignPresenteru mám:
public function startup() {
parent::startup();
if ($this->getUser()->isLoggedIn()) {//pokud je uživatel přihlášen
$this->redirect('Homepage:default');
}
}
díky…