Сбросьте пароль вручную, ответив на секретные вопросы - Laravel - PullRequest
0 голосов
/ 02 апреля 2020

Я хочу реализовать локально забытый пароль, ответив на несколько вопросов безопасности, где пользователь может сбросить свой пароль без отправки ссылок для сброса по электронной почте. Здесь я попробовал приведенный ниже код в updatePassword.blade. php проверка электронной почты, пароля и подтверждения пароля не работает, поэтому я внедряю его в UserControler, когда помещаю адрес электронной почты, которого нет в базе данных, или Когда я вставляю несоответствующий пароль в поля ввода пароля и подтверждения пароля, выдается следующее сообщение об ошибке, но если я введу правильный адрес электронной почты и пароль с соответствующим паролем в поля ввода пароля и подтверждения пароля, он сбрасывает мой пароль, я не знаю, что не так.

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

ErrorException (E_ERROR) Попытка получить свойство необъекта (Представление: C: \ xampp \ htdocs \ Bookstore \ resources \ views \ layouts \ layout.blade. php) (Представление: C: \ xampp \ htdocs \ Bookstore \ resources \ views \ layouts \ layout.blade. php)

Вот маршруты в сети. php

Route::get('getview', [
    'uses' => 'HomeController@getview',
    'as' => 'check.getview'
]);
Route::post('chekQuestions', [
    'uses' => 'HomeController@chekQuestions',
    'as' => 'check.question'
]);

Route::post('updagePassword', [
    'uses' => 'HomeController@updagePassword',
    'as' => 'update.question'
]);

Вот код в контроллере

  public function getview()
    {
        return view('auth.test');
    }

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

        if ($user->email != $request->email) {
            return redirect()
                ->back()
                ->with(Session::flash('message', 'دا ایمل شتون نلری'))

                ->withInput();
        }
        if ($user->answerQuestionOne != $request->answerQuestionOne) {
            return redirect()
                ->back()
                ->with(Session::flash('message2', 'ځواب مو مطابقت نلری'))

                ->withInput();
        }
        if ($user->answerQuestionTwo != $request->answerQuestionTwo) {
            return redirect()
                ->back()
                ->with(Session::flash('message3', 'ځواب مو مطابقت نلری'))

                ->withInput();
        }
        return view('auth.updatePassword',compact('user'));
    }
    public function updagePassword(Request $request)
    {
        $this->validate($request, [
            'email' => 'required|string|email',
            'password' => 'required|confirmed|min:8'
        ]);
        $user = User::first();
        if ($user->email != $request->email) {
            return redirect()
                ->back()
                ->with(Session::flash('message', 'دا ایمل شتون نلری'))
                ->withInput();
        } elseif ($request->password_confirmation != $request->password) {
            return redirect()
                ->back()
                ->with(Session::flash('message2', 'دا ایمل شتون نلری'))
                ->withInput();
        } else {
            $user->where('email', $request->email)->update([
                'password' => Hash::make($request->password)
            ]);
            return redirect()->route('login');
        }
    }

Вот ссылка, ведущая к тестовому виду

<a style="font-size: 15px;" href="{{route('check.getview')}}" class="to_register">د پټ نو بیا راګرځول د امنتی پوښتنو له لاری </a>

Вот тест vi ew

<div class="x_content">
                        <br>
                             <form method="POST" action="{{route('check.question')}}" class="form-horizontal form-label-left">
                        @csrf


                            <div class="form-group">

                                <label class="control-label col-md-3 col-sm-3 col-xs-12" for="first-name">ایمل
                                    <span class="required">*</span>
                                </label>
                                <div class="col-md-6 col-sm-6 col-xs-12">
                                   <input id="email" type="email" placeholder=" ایمل" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ old('email') }}" required autocomplete="email" autofocus>
      @if(Session::has('message'))
                           <p  class="bg-danger">{{session('message')}} </p>

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

                                <label class="control-label col-md-3 col-sm-3 col-xs-12" for="last-name">
                                    لومړۍ امنیتي پوښتنه <span class="required">*</span>
                                </label>
                                <div class="col-md-6 col-sm-6 col-xs-12">
                                   <input id="answerQuestionOne" placeholder="لومړۍ امنیتي پوښتنه" type="text"   class="form-control @error('answerQuestionOne') is-invalid @enderror" name="answerQuestionOne" value="{{ old('answerQuestionOne') }}" required autocomplete="answerQuestionOne" autofocus>
   @if(Session::has('message2'))
                           <p  class="bg-danger">{{session('message2')}} </p>

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

                                <label for="middle-name" class="control-label col-md-3 col-sm-3 col-xs-12">
                                    دوهمه امنیتي پوښتنه </label>
                                <div class="col-md-6 col-sm-6 col-xs-12">
                                   <input id="answerQuestionTwo" placeholder="دوهمه امنیتي پوښتنه " type="text" class="form-control @error('answerQuestionTwo') is-invalid @enderror" name="answerQuestionTwo" value="{{ old('answerQuestionTwo') }}" required autocomplete="answerQuestionTwo" autofocus>
    @if(Session::has('message3'))
                           <p  class="bg-danger">{{session('message3')}} </p>

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

                            <div class="ln_solid"></div>
                            <div class="form-group">
                                <div class="col-md-6 col-sm-6 col-xs-12 col-md-offset-3">
                                    {{-- <button type="submit" class="btn btn-primary">انصراف</button> --}}
                                    <button type="submit" class="btn btn-success">خوندی کړی</button>
                                </div>
                            </div>

                        </form>
                    </div>

Вот обновлениеPassword.blade. php

   <div class="x_content">

                        <br>
                             <form method="POST" action="{{route('update.question')}}" class="form-horizontal form-label-left">
                        @csrf


                            <div class="form-group">
                                <label class="control-label col-md-3 col-sm-3 col-xs-12" for="first-name">ایمل
                                    <span class="required">*</span>
                                </label>
                                <div class="col-md-6 col-sm-6 col-xs-12">
                                    {{-- @foreach ($user as $getemail) --}}

                                    {{-- value="{{ old('email') }}" --}}
                                   <input id="email" type="email" placeholder=" ایمل" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ $user->email }}" required autocomplete="email" autofocus>
                                 {{-- @endforeach --}}
                                   @if(Session::has('message'))
                           <p  class="bg-danger">{{session('message')}} </p>

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

                            <div class="form-group">
                              <label class="control-label col-md-3 col-sm-3 col-xs-12" for="first-name">پټ نوم
                                    <span class="required">*</span>
                                </label>
                                <div class="col-md-6 col-sm-6 col-xs-12">
                                <input id="password" type="password" class="form-control @error('password') is-invalid @enderror" name="password" required autocomplete="new-password">
 @if(Session::has('message2'))
                           <p  class="bg-danger">{{session('message2')}} </p>

                         @endif
                                @error('password')
                                    <span class="invalid-feedback" role="alert">
                                        <strong>{{ $message }}</strong>
                                    </span>
                                @enderror
                            </div>
                            </div>
                              <div class="form-group">
                                 <label class="control-label col-md-3 col-sm-3 col-xs-12" for="first-name">پټ تأیید
                                    <span class="required">*</span>
                                </label>
                                <div class="col-md-6 col-sm-6 col-xs-12">
                                    {{-- <input id="passwordconfirm" type="password" class="form-control" name="passwordconfirm" required autocomplete="new-password">
                          --}}
                            <input id="password-confirm" type="password" placeholder="دپټنوم تأیید "  class="form-control" name="password_confirmation" required autocomplete="new-password">
                 @if(Session::has('message3'))
                           <p  class="bg-danger">{{session('message3')}} </p>

                         @endif
                                 </div>
                            </div>

                            <div class="ln_solid"></div>
                            <div class="form-group">
                                <div class="col-md-6 col-sm-6 col-xs-12 col-md-offset-3">
                                    {{-- <button type="submit" class="btn btn-primary">انصراف</button> --}}
                                    <button type="submit" class="btn btn-success">خوندی کړی</button>
                                </div>
                            </div>

                        </form>
                    </div>

Ответы [ 2 ]

0 голосов
/ 13 апреля 2020

Я нашел решение, вручную установив сообщения проверки

Код в контроллере

public function getview(Request $request)
{
    $user=new User();
      $anserone= $request->answerQuestionOne;
      $anstwo = $request->answerQuestionTwo;
      return view('auth.question',compact('user','anserone','anstwo'));
}

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

    $user = User::where('email', $request->email)->first();

    if ( $user == null) {
        //
        $user=new User();
        $user->email= $request->email;
        $anserone= $request->answerQuestionOne;
         $anstwo = $request->answerQuestionTwo;
        Session::flash('message', 'دا ایمل شتون نلری');
        return view('auth.question',compact('user','anserone','anstwo'));

    }
       if ( $user->answerQuestionOne == null || $user->answerQuestionTwo == null) {
        //
        $user=new User();
        $user->email= $request->email;
        $anserone= $request->answerQuestionOne;
         $anstwo = $request->answerQuestionTwo;

        Session::flash('message4', 'هیڅ مورد نشته، لمړی تاسی خپل امنیتی ځوابونه خوندی کړی');
        return view('auth.question',compact('user','anserone','anstwo'));

    }
       if ($user->answerQuestionOne != $request->answerQuestionOne) {
            $anserone= $request->answerQuestionOne;
            $anstwo = $request->answerQuestionTwo;
            Session::flash('message2', 'دپښتنو ځوابونه مو ناسم وو');
            return view('auth.question',compact('user','anserone','anstwo'));
    }
      if ( $user->answerQuestionTwo != $request->answerQuestionTwo) {
          $anstwo = $request->answerQuestionTwo;
          $anserone= $request->answerQuestionOne;

        Session::flash('message3', 'دپښتنو ځوابونه مو ناسم وو');
            return view('auth.question',compact('user','anstwo','anserone'));
    }

    return view('auth.updatePassword',compact('user'));
}
public function updagePassword(Request $request)
{
    $this->validate($request, [
        'email' => 'required|string|email',
        'password' => 'required|min:8'
    ]);
    // $user = User::first();
    $user = User::where('email', $request->email)->first();
    if ( $user == null) {
        //
        $user=new User();
        $user->email= $request->email;
        // $anserone= $request->answerQuestionOne;
        //  $anstwo = $request->answerQuestionTwo;
        Session::flash('message', 'دا ایمل شتون نلری');
             return view('auth.updatePassword',compact('user'));

    }

     if ($request->password_confirmation != $request->password) {
            Session::flash('message3', 'پټ نوم مطابقت نلری');
             return view('auth.updatePassword',compact('user'));
    } 

         $user->where('email', $request->email)->update([
            'password' => Hash::make($request->password)
        ]);
        return redirect()->route('login');

}
0 голосов
/ 03 апреля 2020

попробуйте

$this->validate($request, [
    'email' => 'required|string|email',
    'password' => 'required|min:6',
    'password_confirmation' => 'required|same:password'
 ]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...