Beispiel #1
0
 public function forgotPasswordAction()
 {
     $form = new Default_Form_ForgotPassword();
     $form->setDecorators(array('ViewScript', array('ViewScript', array('viewScript' => 'forms/forgot-password.phtml'))));
     $this->view->formForgotPassword = $form;
     $model = new Default_Model_Users();
     if ($this->getRequest()->isPost()) {
         if ($form->isValid($this->getRequest()->getPost())) {
             $model->setOptions($form->getValues());
             $select = $model->getMapper()->getDbTable()->select()->from(array('u' => 'users'), array('u.*'))->where("NOT u.deleted")->where("u.email=?", $model->getEmail());
             $result = $model->fetchRow($select);
             if (count($result) != 0) {
                 $newpass = '';
                 $alphabet = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789";
                 for ($i = 0; $i < 8; $i++) {
                     $n = rand(0, count($alphabet) - 1);
                     $pass[$i] = $alphabet[$n];
                     $newpass .= $pass[$i];
                 }
                 $newpassMd5 = md5($newpass);
                 $model->setPassword($newpassMd5);
                 $savedPass = $model->save();
                 $emailArray = array();
                 $emailArray['subject'] = 'Resetare Parola';
                 $emailArray['content'] = 'Noua dumneavoastra parola este: ' . $newpass;
                 $emailArray['toEmail'] = $model->getEmail();
                 $emailArray['fromEmail'] = "*****@*****.**";
                 $emailArray['fromName'] = "Resetare Parola";
                 $emailArray['SMTP_USERNAME'] = SMTP_USERNAME;
                 $emailArray['SMTP_PASSWORD'] = SMTP_PASSWORD;
                 $emailArray['SMTP_PORT'] = SMTP_PORT;
                 $emailArray['SMTP_URL'] = SMTP_URL;
                 $sent = Needs_Tools::sendEmail($emailArray);
                 if ($sent && $savedPass) {
                     $this->_flashMessenger->addMessage("<div class='success  canhide'><p>The password was successfully changed!</p><a href='javascript:;'></a></div>");
                 } else {
                     $this->_flashMessenger->addMessage("<div class='error canhide'><p>The password was not changed!<a href='javascript:;'></a></p></div>");
                 }
             } else {
                 $this->_flashMessenger->addMessage("<div class='error canhide'><p>The email was not found in the database!<a href='javascript:;'></a></p></div>");
             }
             $this->_redirect('/auth/forgot-password/');
         }
     }
 }