Nette\Application\AbortException při redirectu ve vytváření komponenty
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- AZJOL
- Člen | 34
Zdravím, vytvářím možnost reset hesla u aplikace přes link, který přijde do emailu. Chtěl bych tedy udělat přístup ke změně hesla jen pokud bude správný parametr link nebo pokud bude uživatel přihlášen. Mohl byste mi někdo pomoct?
Takto nějak bych si to představoval:
protected function createComponentChangePassForm()
{
if($this->getParameter('link')){
//Zde bude kontrola linku s databází a následně možnost reset hesla
}
else{
if(!$this->getUser()->isLoggedIn()){
$this->redirect('in');
}
else{
return $this->changePassFactory->change(function () {
$this->flashMessage('Vaše heslo bylo <b>úspěšně změněno</b>', 'success');
$this->redirect('Homepage:default');
});
}
}
}
- CZechBoY
- Člen | 3608
Nějak tak? Asi nechápu na čem ses zasekl :-/
protected function createComponentChangePassForm()
{
if($this->getParameter('link') || $this->getUser()->isLoggedIn()) {
if ($this->someModel->checkResetLink($this->getParameter('link')) !== true) {
$this->redirect('in');
}
return $this->changePassFactory->change(function () {
$this->flashMessage('Vaše heslo bylo <b>úspěšně změněno</b>', 'success');
$this->redirect('Homepage:default');
});
}
$this->redirect('in');
}
- David Matějka
- Moderator | 6445
tu kontrolu a presmerovani nesmis provadet v createComponent*, ale v action* metode