Beispiel #1
0
 public function resetUserPassword($email, $requested_password = null, $old_password = null, $new_email = null)
 {
     // check if the user is found
     $c = new Criteria();
     $c->add(adminKuserPeer::EMAIL, $email);
     $c->addAscendingOrderByColumn(adminKuserPeer::ID);
     $user = adminKuserPeer::doSelectOne($c);
     if (!$user) {
         throw new kAdminKuserException('', kAdminKuserException::ADMIN_KUSER_NOT_FOUND);
     }
     if ($requested_password && !$user->isPasswordValid($old_password)) {
         throw new kAdminKuserException('', kAdminKuserException::ADMIN_KUSER_WRONG_OLD_PASSWORD);
     }
     if ($requested_password && (!adminKuserPeer::isPasswordStructureValid($requested_password) || stripos($requested_password, $user->getScreenName()) !== false) || stripos($requested_password, $user->getFullName() !== false)) {
         throw new kAdminKuserException('', kAdminKuserException::PASSWORD_STRUCTURE_INVALID);
     }
     if ($requested_password && $user->passwordUsedBefore($requested_password)) {
         throw new kAdminKuserException('', kAdminKuserException::PASSWORD_ALREADY_USED);
     }
     $password = $user->resetPassword($requested_password, $old_password);
     if ($new_email && $new_email != $user->getEmail()) {
         $user->setEmail($new_email);
     }
     $user->save();
     if (!$requested_password) {
         $this->emailResetPassword($user->getPartnerId(), $user->getEmail(), $user->getFullName(), self::getPassResetLink($user->getPasswordHashKey()));
     }
     return array($password, $new_email);
 }