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