Login.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: giancarlo
  5. * Date: 28/06/2018
  6. * Time: 16:52
  7. */
  8. namespace OpenMind\Web;
  9. use OpenMind\System\User;
  10. class Login extends Controller
  11. {
  12. public function Login($f3)
  13. {
  14. if ($f3->exists('SESSION.user')) {
  15. $f3->reroute('/homemenu');
  16. return;
  17. }
  18. $f3->clear('SESSION.user');
  19. $f3->clear('COOKIE.username');
  20. $f3->set('CONTENT', 'login.tpl');
  21. echo \Template::instance()->render('masterpage.tpl');
  22. }
  23. /**
  24. * Check if login is valid
  25. *
  26. * @param string $username
  27. * @param string $password
  28. * @return int|\OpenMind\System\User
  29. */
  30. private function checkLogin(string $username, string $password): ?User
  31. {
  32. $user = new User(['username=?', $username]);
  33. if (!$user->dry()) {
  34. $exist = password_verify("{$username}|{$password}", $user->saltedpassword);
  35. if ($exist)
  36. return $user;
  37. }
  38. return null;
  39. }
  40. /**
  41. * Check if username and password are correct
  42. *
  43. * @param $f3
  44. * @throws \Exception
  45. */
  46. public function LoginForm($f3)
  47. {
  48. $accountData = $this->getSanitizedPostRequest();
  49. $user = $this->checkLogin($accountData['username'], $accountData['password']);
  50. if (is_null($user)) {
  51. $f3->clear('SESSION.user');
  52. $f3->clear('COOKIE.username');
  53. $f3->set('CONTENT', 'login.tpl');
  54. $f3->set('INFOTEXT', 'Dati di accesso non corretti');
  55. echo \Template::instance()->render('masterpage.tpl');
  56. return;
  57. /*http_response_code(500);
  58. throw new \Exception("Dati di accesso non corretti");*/
  59. }
  60. $user->Store();
  61. $f3->set('COOKIE.username', $accountData['username']);
  62. $f3->reroute('/homemenu');
  63. }
  64. public function Logout($f3)
  65. {
  66. $f3->clear('SESSION.user');
  67. $f3->clear('COOKIE.username');
  68. $f3->reroute('/');
  69. }
  70. }