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'); } } }