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.
class Auth_Example extends Auth {
protected function _login($username, $password, $remember)
{
// Do username/password check here
$tab = array( // tablica przechowywujaca success walidacji i ewentualne bledy 'success' => FALSE, // czy walidacja przebiegła pomyślnie
'errors' => NULL, // ewentualne bledy
);
// walidacja loginu i hasla
$validate = new Validation
(array( 'username' => $username,
'password' => $password,
));
$validate->rule('username', 'not_empty')
->rule('username', 'min_length', array(':value', 4)) ->rule('username', 'max_length', array(':value', 20)) ->rule('password', 'not_empty')
->rule('password', 'min_length', array(':value', 5)) ->rule('password', 'max_length', array(':value', 20
));
if($validate->check()) // sprawdza czy walidacja przebiegła pomyślnie
{
// pobieram prawdziwe haslo uzytkownika
$modelAuth = new Model_Auth();
$get_user_password = $modelAuth->get_user_password($username);
// hashowanie wpisanego hasla
$password = $this->hash_password($password);
$validate = new Validation
(array( 'password' => $password,
'repassword'=> $get_user_password,
));
// jeszcze raz robie walidację hasła (czy jest poprawne)
$validate->rule('password', 'matches', array(':validation', 'password', 'repassword'));
if($validate->check()) // sprawdzam czy ponowna walidacja przebiegła pomyślnie
{
// ---- loguje uzytkownika ----
$tab['success'] = TRUE; // walidacja przebiegła pomyślnie
$this->complete_login($username);
}
else
{
$tab['errors'] = $validate->errors('msg'); // pobieram bledy
}
}
else
{
$tab['errors'] = $validate->errors('msg'); // pobieram bledy
}
return $tab;
}
}
Przepraszam za up, ale zależy mi na tym.