[ 'class' => AccessControl::className(), 'rules' => [ [ 'actions' => [ 'login', 'error', ], 'allow' => true, ], [ 'allow' => true, 'roles' => [ '@' ], ], ], ], 'verbs' => [ 'class' => VerbFilter::className(), 'actions' => [// 'change-password' => [ 'post' ], ], ], ]; } /** * User profile page, that allows to change UserData and password. * * @param \artbox\core\models\ChangePassword|null $changePasswordModel * @param \common\models\UserData|null $userData * * @return string * @throws \yii\base\InvalidConfigException */ public function actionIndex(ChangePassword $changePasswordModel = null, UserData $userData = null) { /** * @var User $user */ $user = \Yii::$app->user->identity; $userData = new UserData(); if (empty( $changePasswordModel )) { /** * @var ChangePassword $changePasswordModel */ $changePasswordModel = \Yii::createObject(ChangePassword::className()); } return $this->render( 'index', [ 'user' => $user, 'changePasswordModel' => $changePasswordModel, 'userData' => $userData ] ); } /** * Change User password * * @return string|\yii\web\Response */ public function actionChangePassword() { if (empty( \Yii::$app->request->post() )) { return $this->redirect([ 'index' ]); } /** * @var ChangePassword $model */ $model = \Yii::createObject(ChangePassword::className()); $success = false; if ($model->load(\Yii::$app->request->post()) && $model->validate()) { if ($model->validatePassword()) { if (( $success = $model->saveChanges() ) === true) { \Yii::$app->session->setFlash('success', \Yii::t('core', 'Password was successfully changed.')); } } } if (!$success) { \Yii::$app->session->setFlash('error', \Yii::t('core', 'Password change failed.')); } $model->oldPassword = $model->newPassword = $model->newPasswordRepeat = null; return $this->actionIndex($model); } /** * Update UserData * * @return string|\yii\web\Response * @throws \yii\base\InvalidConfigException */ public function actionUpdate() { if (empty( \Yii::$app->request->post() )) { return $this->redirect([ 'index' ]); } /** * @var User $user */ $user = \Yii::$app->user->identity; /** * @var LinkBehavior $userDataBehavior */ $data = new UserData(); $changePassword = \Yii::createObject(ChangePassword::className()); $successData = true; if ($data->load(\Yii::$app->request->post()) && $data->validate()) { $successData = $data->saveData(); } $successPassword = true; if ($changePassword->load(\Yii::$app->request->post()) && $changePassword->validatePassword()){ $successPassword = $changePassword->saveChanges(); } if ($successPassword && $successData){ \Yii::$app->session->setFlash('success', \Yii::t('core', 'You data changed.')); } else { \Yii::$app->session->setFlash('error', \Yii::t('core', 'Change failed.')); } return $this->actionIndex($changePassword, $data); } }