60 lines
1.6 KiB
PHP
60 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace App\UI\Sign;
|
|
|
|
use Nette\Application\UI\Presenter;
|
|
use Nette\Application\UI\Form;
|
|
use Nette\Security\AuthenticationException;
|
|
|
|
class SignPresenter extends Presenter
|
|
{
|
|
/**
|
|
* Vytvoření přihlašovacího formuláře
|
|
*/
|
|
protected function createComponentSignInForm(): Form
|
|
{
|
|
$form = new Form();
|
|
|
|
$form->addEmail('email', 'E-mail:')
|
|
->setRequired('Zadejte prosím váš e-mail.')
|
|
->setHtmlAttribute('placeholder', 'jan@novak.cz');
|
|
|
|
$form->addPassword('password', 'Heslo:')
|
|
->setRequired('Zadejte prosím heslo.');
|
|
|
|
$form->addSubmit('send', 'Přihlásit se');
|
|
|
|
$form->onSuccess[] = [$this, 'signInFormSucceeded'];
|
|
|
|
return $form;
|
|
}
|
|
|
|
/**
|
|
* Zpracování formuláře po odeslání
|
|
*/
|
|
public function signInFormSucceeded(Form $form, \stdClass $data): void
|
|
{
|
|
try {
|
|
// Zavolá náš Authenticator spojený s Master DB
|
|
$this->getUser()->login($data->email, $data->password);
|
|
|
|
$this->flashMessage('Přihlášení proběhlo úspěšně.', 'success');
|
|
|
|
// Přesměrování do hlavní části aplikace (např. HomePresenter)
|
|
$this->redirect('Home:');
|
|
|
|
} catch (AuthenticationException $e) {
|
|
$form->addError('Nespravný e-mail nebo heslo.');
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Akce pro odhlášení
|
|
*/
|
|
public function actionOut(): void
|
|
{
|
|
$this->getUser()->logout(true); // smaže i identitu
|
|
$this->flashMessage('Byli jste úspěšně odhlášeni.', 'info');
|
|
$this->redirect('in');
|
|
}
|
|
} |