Yii2 Основной сброс пароля - PullRequest
0 голосов
/ 05 июня 2018

Я пытаюсь создать «Забыли пароль» в Yii2 Basic

Моя функция в контроллере:

public function actionLostpassword() 
        {
            $model = new Userlogin;

            if ($model->load(Yii::$app->request->post()) ) 
            {
                if (Userlogin::findOne(['UserEmail' => $model->TheEmeil]))
                { 
                    $this->ResetPassWords($model->TheEmeil); 
                } 
                else { 
                    echo "Email Not Match" ;
                }
            }
            else{
                return $this->render('Forms/_ForgetPassword', [
                        'model' => $model,
                    ]);
            }
        }

    public function ResetPassWords($temail)
        {
            $randPassword = Yii::$app->params['RandPassword'];

            $modd = Userlogin::findOne(['UserEmail' => $temail ]);
            $modd->Password = Yii::$app->security->generatePasswordHash($randPassword);
            $modd->save();
            echo $randPassword;
        }

Мой вид:

<?php $form = ActiveForm::begin(); ?>

    <?= $form->field($model, 'TheEmeil')->textInput(['maxlength' => true]) ?>

    <div class="form-group">
        <?= Html::submitButton($model->isNewRecord ? 'Reset' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
    </div>

    <?php ActiveForm::end(); ?>

но если я использую $ modd-> save (false);Если я использую false в $ modd-> save (), пароль меняется.Можно ли обновить пароль без использования false?из-за false это означает, что Yii не будет проверять.

Я использовал $ modd-> save ();$ Modd-> getErrors ();Я получаю пустую страницу;если я использую var_dump ($ model-> TheEmeil);умереть;я получаю:

I:\zzerver\Uwamp -port 84\uw-cms-p8585\www\yii60\wfp\controllers\UsrslogController.php:129:string 'us2@ts.ts' (length=9)

1 Ответ

0 голосов
/ 05 июня 2018

Когда пароль сохранен, его следует подтвердить.Вы можете сделать:

  1. создать виртуальное поле с именем plainPassword
  2. при настройке plainPassword, установить пароль для зашифрованной версии plainPassword
  3. настроить правила проверки для запуска проверки наplainPassword (в любом случае нет ничего особенного для проверки зашифрованного пароля :))

Однако я не рекомендую использовать эту логику в сущности ActiveRecord.Для вас было бы лучше создать такую ​​модель, как ForgotPasswordForm extends Model.

, в итоге вы должны получить что-то вроде этого:

class UserLogin extends ActiveRecord {
  public $plainPassword;

  public function setPlainPassword($value){
    $this->password = Yii::$app->security->generatePasswordHash($value);
  }

  public function rules(){
    return [
      ['plainPassword', 'required', 'min' => 6]
    ];
  }

}
...