Kufrik/app/UI/Sign/SignPresenter.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('Faktura:');
} 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');
}
}