Witam. Próbuję zrobić rejestrację oraz logowanie. Driver w config/auth.php ustawiłem własny czyli "example". Miałem problem z metodą login, którą sam muszę sobie uzupełnić, ale udało mi się uzupełnić tę metodę i działa jak należy, jednak chciałbym aby ktoś z Was, doświadczony, sprawdził mój kod, gdyż nie chcę uczyć się złych nawyków jeżeli takie zrobiłem. Głównie chodzi mi o walidację, z którą miałem problem - nie chciałem od razu do modelu podawać niesprawdzonej nazwy użytkownika. Chciałem to zrobić po walidacji, ale znów porównanie podanego hasła i tego poprawnego (z bazy) także chciałem wcisnąć do tej walidacji, aby ewentualny błąd o tym, że hasło jest nieprawidłowe, także znalazł się w jednej tablicy $errors a nie oddzielnie... Czy źle zrobiłem, tworząc 2 razy walidację/obiekt klasy Walidacji w jednej metodzie? Dałoby się to jakoś lepiej zrobić?

Proszę o zerknięcie i ewentualne uwagi. Dziękuję z góry.

  1. class Auth_Example extends Auth {
  2.  
  3. protected function _login($username, $password, $remember)
  4. {
  5. // Do username/password check here
  6. $tab = array( // tablica przechowywujaca success walidacji i ewentualne bledy
  7. 'success' => FALSE, // czy walidacja przebiegła pomyślnie
  8. 'errors' => NULL, // ewentualne bledy
  9. );
  10.  
  11. // walidacja loginu i hasla
  12. $validate = new Validation(array(
  13. 'username' => $username,
  14. 'password' => $password,
  15. ));
  16.  
  17. $validate->rule('username', 'not_empty')
  18. ->rule('username', 'min_length', array(':value', 4))
  19. ->rule('username', 'max_length', array(':value', 20))
  20. ->rule('password', 'not_empty')
  21. ->rule('password', 'min_length', array(':value', 5))
  22. ->rule('password', 'max_length', array(':value', 20));
  23.  
  24. if($validate->check()) // sprawdza czy walidacja przebiegła pomyślnie
  25. {
  26. // pobieram prawdziwe haslo uzytkownika
  27. $modelAuth = new Model_Auth();
  28. $get_user_password = $modelAuth->get_user_password($username);
  29.  
  30. // hashowanie wpisanego hasla
  31. $password = $this->hash_password($password);
  32.  
  33. unset($validate);
  34. $validate = new Validation(array(
  35. 'password' => $password,
  36. 'repassword'=> $get_user_password,
  37. ));
  38.  
  39. // jeszcze raz robie walidację hasła (czy jest poprawne)
  40. $validate->rule('password', 'matches', array(':validation', 'password', 'repassword'));
  41.  
  42. if($validate->check()) // sprawdzam czy ponowna walidacja przebiegła pomyślnie
  43. {
  44. // ---- loguje uzytkownika ----
  45. $tab['success'] = TRUE; // walidacja przebiegła pomyślnie
  46.  
  47. $this->complete_login($username);
  48. }
  49. else
  50. {
  51. $tab['errors'] = $validate->errors('msg'); // pobieram bledy
  52. }
  53. }
  54. else
  55. {
  56. $tab['errors'] = $validate->errors('msg'); // pobieram bledy
  57. }
  58. return $tab;
  59. }
  60. }


Przepraszam za up, ale zależy mi na tym.