public function actionPassword($code = null)
 {
     $message = null;
     $model = null;
     $user = $code ? User::findOne(['code' => $code]) : Yii::$app->user->identity;
     if ($user) {
         $model = new Password(['scenario' => $code ? 'reset' : 'default', 'user' => $user]);
         if ($model->load(Yii::$app->request->post()) && $model->validate()) {
             if ($code) {
                 $user->code = null;
                 if (!$user->auth) {
                     $user->generateAuthKey();
                 }
                 $user->setPassword($model->new_password);
                 if ($user->save()) {
                     return $this->redirect(['user/login']);
                 } else {
                     $message = 'User validation error';
                 }
             } else {
                 if ($user->validatePassword($model->password)) {
                     $user->setPassword($model->new_password);
                     if ($user->save()) {
                         return $this->redirect(['user/view', 'name' => $user->name]);
                     } else {
                         $message = 'User validation error';
                     }
                 } else {
                     $model->addError('password', Yii::t('app', 'Invalid password'));
                 }
             }
         }
     } else {
         $message = Yii::t('app', 'Invalid code');
     }
     return $this->render('password', ['model' => $model, 'message' => $message]);
 }
 public function actionPassword($id)
 {
     if (!\Yii::$app->user->isGuest) {
         $modeluser = $this->findModeluser($id);
         if (Yii::$app->user->identity->id == $id) {
             $modelpassword = new Password();
             $modelpassword->username = $modeluser->username;
             if ($modelpassword->load(Yii::$app->request->post())) {
                 if ($modelpassword->validate()) {
                     $modeluser->setPassword($modelpassword->new_password);
                     if ($modeluser->save()) {
                         Yii::$app->session->setFlash('info', 'Новый парль сохранен.');
                         return $this->refresh();
                     } else {
                         Yii::$app->session->setFlash('error', 'Новый парль не сохранен.');
                         return $this->refresh();
                     }
                 }
             }
             return $this->render('password', ['model' => $modelpassword]);
         } else {
             Yii::$app->session->setFlash('error', 'У вас не прав доступа к этому разделу сайта.');
             return $this->redirect(['index']);
         }
     } else {
         return $this->redirect(['login']);
     }
 }
 public function actionReset($id, $hash)
 {
     $ep = User::getEmailAndPassById($id);
     $email = $ep['email'];
     $pass = $ep['password_hash'];
     $hash1 = $email;
     for ($i = 0; $i < 13; ++$i) {
         $hash1 = sha1(md5($hash1) . $email . $pass . sha1($email));
     }
     if ($hash == $hash1) {
         $model = new Password();
         if ($model->load(Yii::$app->request->post()) && $model->validate()) {
             $model1 = User::findOne($id);
             $model1->setPassword($model->password);
             $model1->save();
             Yii::$app->user->login($model1);
             // @ todo пререкласти
             \Yii::$app->session->setFlash('notify', Yii::t('yii', 'Пароль успешно изменен'));
             return $this->redirect("/id" . $id);
         }
         return $this->render('reset', ['model' => $model]);
     } else {
         return $this->redirect('/');
     }
 }
 public function actionPassword($code = null, $name = null)
 {
     /** @var User $user */
     $message = null;
     $model = null;
     if (isset($_POST['name'])) {
         $name = $_POST['name'];
     }
     if ($name) {
         if (Yii::$app->user->identity->isAdmin() || $name == Yii::$app->user->identity->name) {
             $user = User::findOne(['name' => $name]);
         } else {
             throw new ForbiddenHttpException();
         }
     } else {
         $user = $code ? User::findOne(['code' => $code]) : Yii::$app->user->identity;
     }
     if ($user) {
         $model = new Password(['scenario' => $code || $name ? 'reset' : 'default', 'user' => $user]);
         if ($model->load(Yii::$app->request->post()) && $model->validate()) {
             if ('reset' == $model->scenario) {
                 $user->code = null;
                 if (!$user->auth) {
                     $user->generateAuthKey();
                 }
                 $user->setPassword($model->new_password);
                 if ($user->save()) {
                     Yii::$app->session->addFlash('success', Yii::t('app', 'Password saved'));
                     return Yii::$app->user->isGuest ? $this->redirect(['user/login']) : $this->redirect(['user/view', 'name' => $user->name]);
                 } else {
                     $message = json_encode($user->errors, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
                 }
             } else {
                 if ($user->validatePassword($model->password)) {
                     $user->setPassword($model->new_password);
                     if ($user->save()) {
                         Yii::$app->session->addFlash('success', Yii::t('app', 'Password saved'));
                         return $this->redirect(['user/view', 'name' => $user->name]);
                     } else {
                         $message = json_encode($user->errors, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
                     }
                 } else {
                     $model->addError('password', Yii::t('app', 'Invalid password'));
                 }
             }
         }
     } else {
         $message = Yii::t('app', 'Invalid code');
     }
     return $this->render('password', ['model' => $model, 'message' => $message]);
 }