Přesměrování přihlášeného uživatele po znovu zobrazení formuláře pro přihlášení
- Zdeno1981
- Člen | 115
Zdravím,
mám klasický přihlašovací presenter jaký je v distribuci
nette/examples
Jde mi o to, že když se přihlásím a po přesměrování zadám opět adresu pro přihlášení tak se zase objeví formulář i když jsem přihlášen.
Pokusil jsem se tedy o něco takového
protected function startup() {
parent::startup();
//dump($this->user->isLoggedIn());
if($this->user->isLoggedIn() == TRUE) {
$this->redirect(':Admin:Dashboard:');
}
}
což funguje, a když jsem přihlášený tak mě to rovnou hodí do administrace, ale problém je že když se chci odhlásit, tak se provede přesměrování, ale zůstávám nadále přihlášený v administraci.
Dokáže někdo poradit v čem je háček?
Editoval Zdeno1981 (30. 3. 2012 13:59)
- Zdeno1981
- Člen | 115
Přiložím tedy přímo můj SignPresenter, v kterém jsem dodal tu část kódu kterou jsem zde uvedl:
<?php
namespace AdminModule;
use Nette\Application\UI,
Nette\Security as NS;
class SignPresenter extends \BasePresenter {
/** @persistent */
public $backlink = '';
protected function startup() {
parent::startup();
//dump($this->user->isLoggedIn());
if ($this->user->isLoggedIn() == TRUE) {
$this->redirect(':Admin:Dashboard:');
}
}
/**
* Formulář pro přihlášení uživatele
* @return \Nette\Application\UI\Form
*/
protected function createComponentSignInForm() {
$form = new UI\Form;
$form->addText('username', 'Jméno uživatele:')
->setRequired('Zdejte jméno uživatele.');
$form->addPassword('password', 'Heslo:')
->setRequired('Zadejte heslo.');
$form->addSubmit('send', 'Přihlásit se');
$form->onSuccess[] = callback($this, 'processForm');
return $form;
}
/**
* Zpracování formuláře
* @param $form
*/
public function processForm($form) {
try {
$values = $form->getValues();
$this->user->login($values->username, $values->password);
$this->restoreRequest($this->backlink);
$this->redirect(':Admin:Dashboard:');
} catch (NS\AuthenticationException $e) {
$form->addError($e->getMessage());
}
}
// Odhlášení uživatele
public function actionOut() {
$this->getUser()->logout();
$this->flashMessage('Byl/a jste odhlášen/a.');
$this->redirect('in');
}
}
je to identické až na tu část co jsem tam přidal a namespace, připadá mi to jako by se nestihla zrušit identita uživatele, a po odhlášení když dojde k redirectu na ten formulář se opět přesměruje do administrace a jsem pořád přihlašený…
- ViPEr*CZ*
- Člen | 817
if ($this->user->isLoggedIn() == TRUE) {
$this->redirect(':Admin:Dashboard:');
}
Jestli se nepletu tak todle se provede ještě než to vleze sem actionOut() { … proto bych tam vypustil v podmínce tudle akci ještě.
if ($this->user->isLoggedIn() == TRUE && $this->getAction() != "out") {
https://doc.nette.org/…n/presenters#…
Editoval ViPEr*CZ* (30. 3. 2012 15:03)