public function sendAction() { $form = new Users_Form_RecoverPassword(); $formData = $this->_request->getPost(); $form->populate($formData); if (!$form->isValid($formData)) { $appSession = Zend_Registry::get('appSession'); $appSession->recoverPasswordForm = $form; return $this->_forward('index'); } $users = new Users_Model_Users(); $user = $users->getUserWithEmail($form->getValue('email')); if (!$user) { $form->email->addError($this->view->translate('This E-mail is not registered in the system')); $appSession = Zend_Registry::get('appSession'); $appSession->recoverPasswordForm = $form; return $this->_forward('index'); } $user->token = Users_Model_User::generateToken(); $user->save(); $file = CommunityID_Resources::getResourcePath('passwordreset_mail.txt'); $emailTemplate = file_get_contents($file); $emailTemplate = str_replace('{userName}', $user->getFullName(), $emailTemplate); $emailTemplate = str_replace('{IP}', $_SERVER['REMOTE_ADDR'], $emailTemplate); // $_SERVER['SCRIPT_URI'] is not always available $URI = self::getProtocol() . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; preg_match('#(.*)/users/recoverpassword#', $URI, $matches); $emailTemplate = str_replace('{passwordResetURL}', $matches[1] . '/users/recoverpassword/reset?token=' . $user->token, $emailTemplate); $this->_sendMail($user->email, $this->view->translate('Community-ID password reset'), $emailTemplate); $this->_helper->FlashMessenger->addMessage($this->view->translate('Password reset E-mail has been sent')); $this->_redirect(''); }
public function saveAction() { $form = new Users_Form_Register(null, $this->view->base); $formData = $this->_request->getPost(); $form->populate($formData); if (!$form->isValid($formData)) { $appSession = Zend_Registry::get('appSession'); $appSession->registerForm = $form; return $this->_forward('index', null, null); } $users = new Users_Model_Users(); if ($users->getUserWithUsername($form->getValue('username'), false, $this->view)) { $form->username->addError($this->view->translate('This username is already in use')); $appSession = Zend_Registry::get('appSession'); $appSession->registerForm = $form; return $this->_forward('index', null, null); } if ($users->getUserWithEmail($form->getValue('email'))) { $form->email->addError($this->view->translate('This E-mail is already in use')); $appSession = Zend_Registry::get('appSession'); $appSession->registerForm = $form; return $this->_forward('index', null, null); } $user = $users->createRow(); $user->firstname = $form->getValue('firstname'); $user->lastname = $form->getValue('lastname'); $user->email = $form->getValue('email'); $user->username = $form->getValue('username'); preg_match('#(.*)/users/register/save#', Zend_OpenId::selfURL(), $matches); $user->generateOpenId($matches[1]); if ($this->_config->ldap->enabled) { // when using ldap, unconfirmed users' password is saved unhashed temporarily, while he registers, // and then it's stored in LDAP and cleared from the db $user->setPassword($form->getValue('password1')); } else { $user->setClearPassword($form->getValue('password1')); } $user->role = Users_Model_User::ROLE_GUEST; $user->token = Users_Model_User::generateToken(); $user->accepted_eula = 0; $user->registration_date = date('Y-m-d'); $mail = self::getMail($user, $this->view->translate('Community-ID registration confirmation')); try { $mail->send(); $user->save(); $user->createDefaultProfile($this->view); $this->_helper->FlashMessenger->addMessage($this->view->translate('Thank you.')); $this->_helper->FlashMessenger->addMessage($this->view->translate('You will receive an E-mail with instructions to activate the account.')); } catch (Zend_Mail_Exception $e) { if ($this->_config->environment->production) { $this->_helper->FlashMessenger->addMessage($this->view->translate('The confirmation E-mail could not be sent, so the account creation was cancelled. Please contact support.')); } else { $this->_helper->FlashMessenger->addMessage($this->view->translate('The account was created but the E-mail could not be sent')); // I still wanna create the user when in development mode $user->save(); } if ($this->_config->logging->level == Zend_Log::DEBUG) { $this->_helper->FlashMessenger->addMessage($e->getMessage()); } } $this->_redirect(''); }