コード例 #1
0
 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('');
 }
コード例 #2
0
 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('');
 }