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/');
         }
     }
 }
 public function indexAction()
 {
     $form = new Default_Form_ForgotPassword();
     $this->view->form = $form;
     if ($this->getRequest()->isPost()) {
         $formData = $this->_request->getPost();
         if ($form->isValid($formData)) {
             $emailConfirmationId = md5(uniqid());
             $db = Zend_Db_Table::getDefaultAdapter();
             $userTable = new Default_Dao_User();
             $updatedRowsCount = $userTable->update(array('email_confirmation_id' => $emailConfirmationId), array($db->quoteInto('email = ?', $formData['email']), 'valid is true'));
             if ($updatedRowsCount == 1) {
                 $mail = new Default_Helper_Mail($formData['email'], '', 'Detager: change password request', 'changePasswordInstructions.phtml');
                 $mail->emailConfirmationId = $emailConfirmationId;
                 $mail->send();
             }
             $this->render('confirm');
         }
     }
 }