Сбросить пароль вручную, ответив на секретные вопросы без отправки электронного письма - Laravel / auth - PullRequest
0 голосов
/ 31 марта 2020

В настоящее время я занимаюсь разработкой простого приложения Bookstore с несколькими пользователями, для которого отправка электронных писем не требуется, поскольку оно будет реализовано в локальной системе, поэтому есть ли способ настроить laravel -auth для функции сброса пароля, добавив несколько полей с вопросами безопасности, где пользователь может сбросить свой пароль без отправки ссылок для сброса по электронной почте.

Любая помощь будет высоко оценена.

здесь я попробовал приведенный ниже код, но id сделал не работает

Код в сети. php

Route::post('/main/checklogin', 'UserController@chekQuestions');

Код в userContoller

 public function chekQuestions(Request $request)
    {
          $request->validate( [
         'email'    => 'required|string|email',
         'answerQuestionOne' => 'required|string|confirmed',
         'answerQuestionTwo'    => 'required|string'
      ] );
    $user = User::first();

        if($user->email == $request->email && $user->answerQuestionOne == $request->answerQuestionOne && $user->answerQuestionTwo == $request->answerQuestionTwo )
         {
            // $userEmail = DB::table( 'password_resets' )->where( 'token', $user->token );
            // return view('auth.password.reset',compact($userEmail));
            return view('auth.password.reset');
         }

           return response()->json( [
         'error'   => true,
         'message' => 'We cannot find a user with that Email Address'
      ], 404 );
    }

Код при сбросе password.blade

    <div id="register" class="animate form registration_form">
      <section class="login_content">
      <form method="POST" action="{{ url('/main/checklogin') }}" >
                    @csrf
          <h3>د پټ نو بیا راګرځولو لپاره لاندی امنتی پوښتنو ته ځواب ورکړی </h3>
          <div class="form-group has-feedback">
            <input id="email" type="email" placeholder=" ایمل" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}" required autocomplete="email" autofocus>

                            @error('email')
                                <span class="invalid-feedback" role="alert">
                                    <strong>{{ $message }}</strong>
                                </span>
                            @enderror
            <div class="form-control-feedback">
              <i class="fa fa-envelope-o text-muted"></i>
            </div>
          </div>
        <div>
           <input id="answerQuestionOne" placeholder="لومړۍ امنیتي پوښتنه" type="text"   class="form-control @error('answerQuestionOne') is-invalid @enderror" name="answerQuestionOne" value="{{ old('answerQuestionOne') }}" required autocomplete="answerQuestionOne" autofocus>

                            @error('answerQuestionOne')
                                <span class="invalid-feedback" role="alert">
                                    <strong>{{ $message }}</strong>
                                </span>
                            @enderror
        </div>
        <div>
            <input id="answerQuestionTwo" placeholder="دوهمه امنیتي پوښتنه " type="text" class="form-control @error('answerQuestionTwo') is-invalid @enderror" name="answerQuestionTwo" value="{{ old('answerQuestionTwo') }}" required autocomplete="answerQuestionTwo" autofocus>

                            @error('answerQuestionTwo')
                                <span class="invalid-feedback" role="alert">
                                    <strong>{{ $message }}</strong>
                                </span>
                            @enderror
        </div>

          <button type="submit" class="btn btn-default btn-block">خوندی کړی </button>



          <div class="clearfix"></div>
           <div class="separator">
            <p class="change_link">
              <a href="#signin" class="to_register">  تاسو دمخه غړی یاست ننوتل </a>
            </p>

            <div class="clearfix"></div>
            <br />
        </form>
      </section>
    </div>

1 Ответ

0 голосов
/ 31 марта 2020

Вам не нужна Laravel реализация для этого. Просто найдите пользователя с указанным адресом электронной почты и проверьте ответы. После этого обновите запись пользователя с новым паролем.

Для того, чтобы получить пользователя, вы должны сделать следующее:

$data = $request->validate( [
         'email'    => 'required|string|email',
         'answerQuestionOne' => 'required|string|confirmed',
         'answerQuestionTwo'    => 'required|string'
      ] );
$user = User::where(['email' => $data['email'])->first();

После этого просто проверьте ответы.

Вы также необходимо принять новый пароль от пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...