Exemplo n.º 1
0
 /**
  * Reset password action
  *
  * @return void
  */
 public function resetPasswordAction()
 {
     if (strtolower($_SERVER['REQUEST_METHOD']) == 'post') {
         $userName = Digitalus_Filter_Post::get('name');
         $user = new Model_User();
         $match = $user->getUserByUsername($userName);
         if ($match) {
             //create the password
             $password = Digitalus_Toolbox_String::random(10);
             //10 character random string
             //load the email data
             $data['username'] = $match->name;
             $data['first_name'] = $match->first_name;
             $data['last_name'] = $match->last_name;
             $data['email'] = $match->email;
             $data['password'] = $password;
             //get standard site settings
             $s = new Model_SiteSettings();
             $settings = $s->toObject();
             $emailFormat = "Hello %s (<em>%s %s</em>),<br /><br />Your password has been reset to:<br /><br /><strong>%s</strong><br /><br />You can login again with Your new Password.<br /><br />Best wishes,<br />%s";
             $emailText = sprintf($emailFormat, $data['username'], $data['first_name'], $data['last_name'], $data['password'], $settings->default_email_sender);
             //attempt to send the email
             $mail = new Digitalus_Mail();
             if ($mail->send($match->email, array($settings->default_email, $settings->default_email_sender), 'Password Reminder', $emailText)) {
                 //update the user's password
                 $match->password = md5($password);
                 $match->save();
                 //save the new password
                 $m = new Digitalus_View_Message();
                 $m->add($this->view->getTranslation('Your password has been reset for security and sent to your email address'));
             } else {
                 $e = new Digitalus_View_Error();
                 $e->add($this->view->getTranslation('Sorry, there was an error sending you your updated password. Please contact us for more help.'));
             }
         } else {
             $e = new Digitalus_View_Error();
             $e->add($this->view->getTranslation('Sorry, we could not locate your account. Please contact us to resolve this issue.'));
         }
         $url = 'admin/auth/login';
         $this->_redirect($url);
     }
 }