예제 #1
0
 public function updateRequestAction()
 {
     MailerTemplate::checkRequired(UsersModule::MAILER_TEMPLATE_CHANGE_PASSWORD);
     $model = new User(User::SCENARIO_CHANGE_PASSWORD_REQUEST);
     $form = new Form('users.ChangePasswordRequestForm', $model);
     $this->performAjaxValidation($model);
     if (isset($_POST['User'])) {
         $model->attributes = $_POST['User'];
         if ($model->validate()) {
             $user = User::model()->find("email = '{$model->email}'");
             if ($user) {
                 if ($user->status == User::STATUS_ACTIVE) {
                     $user->password_recover_code = md5($user->password . $user->email . $user->id . time());
                     $user->password_recover_date = new CDbExpression('NOW()');
                     $user->save();
                     $outbox = new MailerOutbox();
                     $outbox->template_id = MailerTemplate::model()->getIdByCode(UsersModule::MAILER_TEMPLATE_CHANGE_PASSWORD);
                     $outbox->user_id = $user->id;
                     $outbox->save();
                     Yii::app()->user->setFlash('success', 'На ваш Email отправлено письмо с дальнейшими инструкциями.');
                 } else {
                     if ($user->status == User::STATUS_NEW) {
                         Yii::app()->user->setFlash('error', UserIdentity::ERROR_NOT_ACTIVE);
                     } else {
                         Yii::app()->user->setFlash('error', UserIdentity::ERROR_BLOCKED);
                     }
                 }
             } else {
                 Yii::app()->user->setFlash('error', UserIdentity::ERROR_UNKNOWN_EMAIL);
             }
             $this->redirect($_SERVER['REQUEST_URI']);
         }
     }
     $this->render("changePasswordRequest", array('form' => $form));
 }
예제 #2
0
 public function actionActivateAccountRequest()
 {
     MailerTemplate::checkRequired(UsersModule::MAILER_TEMPLATE_ACTIVATION);
     $model = new User(User::SCENARIO_ACTIVATE_REQUEST);
     $form = new Form('users.ActivateRequestForm', $model);
     $this->performAjaxValidation($model);
     if (isset($_POST['User'])) {
         $model->attributes = $_POST['User'];
         if ($model->validate()) {
             $user = User::model()->findByAttributes(array('email' => $_POST['User']['email']));
             if (!$user) {
                 Yii::app()->user->setFlash('error', 'Введенный вами Email не найден');
             } else {
                 switch ($user->status) {
                     case User::STATUS_NEW:
                         $user->generateActivateCode();
                         $user->scenario = User::SCENARIO_ACTIVATE_REQUEST;
                         $user->activate_date = new CDbExpression('NOW()');
                         $user->save();
                         $outbox = new MailerOutbox();
                         $outbox->user_id = $user->id;
                         $outbox->template_id = MailerTemplate::model()->getIdByCode(UsersModule::MAILER_TEMPLATE_ACTIVATION);
                         $outbox->save();
                         Yii::app()->user->setFlash('success', 'На ваш Email отправлено письмо с дальнейшими инструкциями.');
                         break;
                     case User::STATUS_ACTIVE:
                         Yii::app()->user->setFlash('error', UserIdentity::ERROR_ALREADY_ACTIVE);
                         break;
                     case User::STATUS_BLOCKED:
                         Yii::app()->user->setFlash('error', UserIdentity::ERROR_BLOCKED);
                         break;
                 }
             }
         }
     }
     $this->render('activateAccountRequest', array('form' => $form));
 }