Хэш пароля доктрины после проверки регулярного выражения - PullRequest
1 голос
/ 11 ноября 2010

У меня проблема при сохранении пароля в базе данных. У меня есть поле пароля со сложным валидатором регулярных выражений (minlenght + специальные символы + алфавитно-цифровые символы). После отправки формы значение пароля проверяется валидатором. После этого (если значение допустимо), я хотел бы хэш-пароль и, наконец, сохранить это значение, но валидатор регулярного выражения по-прежнему проверяет поле и возвращает ошибку.

Как я могу отключить валидатор, прежде чем наконец сохранить хэшированное значение?

Извините за мой английский!

Код:

На модели пользователя:

 public function setTableDefinition()
 {
     $this->hasColumn('password', 'string', 32, array ('notnull'=>true, 'minlength'=>8, 'regexp'=> '/^.*(?=.{8,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$/'));
     .......
 }

 public function setUp()
 {
        $this->addListener(new userChangeListener());
 }

На слушателя:

class userChangeListener extends Doctrine_Record_Listener
{
    public function postValidate(Doctrine_Event $event)
    {
        $invoker = $event->getInvoker();
        $invoker->password = md5($invoker->password);
    }   
}
...