Mam problem z edycja konta użytkownika a dokładnie z zmianą hasła z starego na nowe. W formularzu mam 3 pola: Stare hasło: [____] Nowe hasło: [____] Powtórz hasło: [____]. Mój problem jest taki że nie wiem jak mam napisać class-e validatora. Największy problem to taki że nie mogę sprawdzić Doctriną czy wogole istnieje takie hasło w bazie danych bo może ktoś ma takie same, więc musze pobrać id użytkownika i wyszukać go w bazie a następnie pobrać dotychczasowe hasło i porównać jes z hasłem wpisanym w polu formularz Stare hasło. Wyszukanie w bazie to nie problem ale pobranie id użytkownika.
Oto co ma razie udało mi się napisać:
FORMS
class oldpass_available extends Zend_Validate_Abstract { ( 'INVALID' => 'Błędne aktualne hasło.' ); public function isValid($value) { $q = Doctrine_Query::create() ->select('u.user_id') ->form('MOdel_Users u') ->where('u.password = ?', $pass) >limit(1) ->execute() ->count(); } }
( 'label' => 'Stare hasło', 'required' => 1, ( //Validator: długość 6-50 znaków ( 'stringLengthTooShort' => 'Hasło powinno mieć więcej niż %min% znaków', 'stringLengthTooLong' => 'Hasło powinno mieć mniej niż %max% znaków' ))), //TODO: AJAX sprawdzenie z pass_verify gdy niepuste ) ));
class Default_Form_Auth_Register extends Zend_Form { public function init() { $oldpass = new Zend_Form_Element_Password('oldpass'); $oldpass->setLabel('Stare hasło') ->addFilter(new Zend_Filter_StringTrim()) ->addValidator(new Zend_Validate_StringLength(6, 50)); //->addValidator(new Main_Validate_Password()); $this->addElement($oldpass); } }