Guest User

Untitled

a guest
Nov 9th, 2018
137
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.14 KB | None | 0 0
  1. <?php
  2.  
  3. declare(strict_types=1);
  4. namespace App\Forms;
  5. use Nette;
  6. use Nette\Application\UI\Form;
  7. use Nette\Security\User;
  8. final class SignInFormFactory
  9. {
  10. use Nette\SmartObject;
  11. /** @var FormFactory */
  12. private $factory;
  13. /** @var User */
  14. private $user;
  15. public function __construct(FormFactory $factory, User $user)
  16. {
  17. $this->factory = $factory;
  18. $this->user = $user;
  19. }
  20. public function create(callable $onSuccess): Form
  21. {
  22. $form = $this->factory->create();
  23. $form->addText('username', 'Username:')
  24. ->setRequired('Please enter your username.');
  25. $form->addPassword('password', 'Password:')
  26. ->setRequired('Please enter your password.');
  27. $form->addCheckbox('remember', 'Keep me signed in');
  28. $form->addSubmit('send', 'Sign in');
  29. $form->onSuccess[] = function (Form $form, \stdClass $values) use ($onSuccess): void {
  30. try {
  31. $this->user->setExpiration($values->remember ? '14 days' : '20 minutes');
  32. $this->user->login($values->username, $values->password);
  33. } catch (Nette\Security\AuthenticationException $e) {
  34. $form->addError('The username or password you entered is incorrect.');
  35. return;
  36. }
  37. $onSuccess();
  38. };
  39. return $form;
  40. }
Add Comment
Please, Sign In to add comment