Guest User

Untitled

a guest
Jun 22nd, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.78 KB | None | 0 0
  1. <?php
  2.  
  3. namespace app\controllers;
  4.  
  5. use core\App;
  6. use core\Utils;
  7. use core\ParamUtils;
  8. use core\RoleUtils;
  9. use core\SessionUtils;
  10.  
  11. use PDOException;
  12. use app\transfer\User;
  13. use app\forms\LoginForm;
  14.  
  15. class LoginCtrl {
  16.  
  17. private $form;
  18.  
  19. // Inicjalizacja właściwości
  20. public function __construct() {
  21. $this->form = new LoginForm();
  22. }
  23.  
  24. // Pobranie i walidacja parametrów
  25. public function validate() {
  26. // Pobieramy login i hasło z request-a
  27. $this->form->login = ParamUtils::getFromRequest('login');
  28. $this->form->password = ParamUtils::getFromRequest('password');
  29. // Dodajemy informację o pobraniu oarametrów
  30. Utils::addInfoMessage('Pobrano parametry.');
  31.  
  32. // Sprawdzamy, czy parametry zostały zadeklarowane
  33. if (!(isset($this->form->login) && isset($this->form->password))) {
  34. return false;
  35. }
  36.  
  37. // Sprawdzamy, czy wystąpiły jakieś błędy
  38. if (!App::getMessages()->isError()) {
  39. //Sprawdzamy, czy login nie jest pustym ciągiem
  40. if ($this->form->login == "") {
  41. Utils::addErrorMessage('Nie podano loginu!');
  42. }
  43.  
  44. //Sprawdzamy, czy hasło nie jest pustym ciągiem
  45. if ($this->form->password == "") {
  46. Utils::addErrorMessage('Nie podano hasła!');
  47. }
  48. }
  49.  
  50. // Sprawdzamy, czy wystąpiły jakieś błędy
  51. if (!App::getMessages()->isError()) {
  52. Utils::addInfoMessage('Poprawnie zwalidowano parametry.');
  53.  
  54. try {
  55. // Pobieramy z bazy użytkownika o podanym loginie i haśle
  56. $result = App::getDB()->select(
  57. "user",
  58. [
  59. "login",
  60. "password",
  61. "role",
  62. "group",
  63. "status"
  64. ],[
  65. "login" => $this->form->login,
  66. "password" => $this->form->password,
  67. "LIMIT" => 1
  68. ]);
  69.  
  70. // Sprawdzamy czy użytkownik został znaleziony
  71. if (count($result) == 1) {
  72. // Tworzymy obiekt użytkownika
  73. $user = new User(
  74. $result[0]['login'],
  75. $result[0]['password'],
  76. $result[0]['role'],
  77. $result[0]['group'],
  78. $result[0]['status']);
  79.  
  80. // Zapisujemy nowo utworzony obiekt użytkownika w sesji
  81. SessionUtils::store('user', serialize($user));
  82.  
  83. // Zapisujemy w sesji role użytkownika
  84. RoleUtils::addRole($user->role);
  85. Utils::addInfoMessage('Pomyślnie zalogowano.');
  86. } else {
  87. // Jeżeli użytkownik nie został znaleziony dodajemy błąd
  88. Utils::addErrorMessage('Niepoprawny login lub hasło!');
  89. }
  90.  
  91. } catch (PDOException $e) {
  92. Utils::addErrorMessage('Wystąpił nieoczekiwany błąd podczas logowania.');
  93. // Jeżeli jest włączony tryb debugowana zapisz dodatkowe informacje o błędzie
  94. if (App::getConf()->debug)
  95. Utils::addErrorMessage($e->getMessage());
  96. }
  97. }
  98.  
  99. // Zwracamy wartość true lub false w zależności od wystąpienia błędów
  100. return !App::getMessages()->isError();
  101. }
  102.  
  103. // Akcja logowania
  104. public function action_login() {
  105. // Sprawdzenie, czy pobranie, walidacja i logowanie zakończyło się pomyślnie
  106. if ($this->validate()) {
  107. // Przekierowanie na strone główną
  108. header("Location: " . App::getConf()->app_url . "/");
  109. } else {
  110. // Wygenerowanie widoku
  111. $this->generateView();
  112. }
  113. }
  114.  
  115. // Akcja wylogowywania
  116. public function action_logout() {
  117. // Wyczyszczenie sesji
  118. session_destroy();
  119.  
  120. // Dodanie informacji o poprawnym wylogowywaniu
  121. Utils::addInfoMessage('Poprawnie wylogowano z systemu.');
  122.  
  123. // Wygenerowanie widoku
  124. $this->generateView();
  125. }
  126.  
  127. // Wygeneruj widok
  128. public function generateView() {
  129. App::getSmarty()->assign('page_title', 'Strona logowania');
  130. App::getSmarty()->assign('page_description', 'Profesjonalne szablonowanie oparte na bibliotece Smarty');
  131. App::getSmarty()->assign('page_keywords', 'słowa, kluczowe');
  132. App::getSmarty()->assign('site_name', 'Files.Czaja.Online');
  133.  
  134. App::getSmarty()->assign('form', $this->form);
  135.  
  136. App::getSmarty()->display('LoginView.tpl');
  137. }
  138.  
  139. }
Add Comment
Please, Sign In to add comment