public function isPasswordValid(sfAuthUser $user, $password)
 {
     if ($user->getPassword() === sfAuthUtil::getHashedPasswordBySaltAndString($user->getSalt(), $password)) {
         return true;
     }
     //if we havent returned yet use the event dispatcher to notify until an event returns true
     $event = $this->dispatcher->notifyUntil(new sfEvent($this, 'sf_auth.is_password_valid'));
     if ($event->isProcessed()) {
         return $event->getReturnValue();
     }
     return false;
 }
 public function doClean($values)
 {
     if (!isset($values['email'])) {
         throw sfException('Error');
     }
     $user = Doctrine::getTable('sfAuthUser')->findOneByEmail($values['email']);
     if ($user) {
         if ($user->getResetHash() && time() < $user->getResetHashCreatedAt() + 86400) {
             throw new sfValidatorError($this, 'You have requested a password less than 24 hours ago');
         }
         $user->setResetHash(sfAuthUtil::getHashedPasswordBySaltAndString(time(), uniqid()));
         $user->setResetHashCreatedAt(time());
         $user->save();
         return array_merge($values, array('user' => $user));
     }
     //Throw user cant be found
     throw new sfValidatorError($this, 'User not found');
 }
 public function setPassword($value)
 {
     $this->setSalt(uniqid());
     parent::_set('password', sfAuthUtil::getHashedPasswordBySaltAndString($this->getSalt(), $value));
 }