подтверждение по электронной почте для multi auth laravel - PullRequest
0 голосов
/ 20 октября 2019

Я пытаюсь применить проверку электронной почты для пользовательского пользователя (job_seeker). Пока что я сделал следующее: создал маршруты проверки для охраны 'job_seeker'. переписать метод show в контроллере верификации новым представлением. Реализовано новое уведомление в модели Job_Seeker. Создал, зарегистрировал и применил новое промежуточное ПО под названием «job_seeker.verified»

Я попробовал это решение Применить Laravel 5.7 MustVerifyEmail в системе множественной аутентификации

После этой процедуры яобнаруживает, что он отправляет уведомление по электронной почте и показывает страницу подтверждения, но когда я нажимаю на кнопку «Подтвердить адрес электронной почты» в письме, это не обновляет базу данных с отметкой времени и не возвращает меня на страницу перенаправления. Вместо этого я получаю "Страница 403

Route::get('/email/verify','job_seeker\Job_Seeker_Verification@show')->name('job_seeker/verify/notice');
Route::get('/email/verify/{id}','job_seeker\Job_Seeker_Verification@verify')->name('job_seeker.verification.verify');

контроллер регистра для job_seeker

        $job_seeker=Job_Seeker::create([
        'username' => $request['username'],
        'email' => $request['email'],
        'city'=> $request['city'],
        'categories' => $request['categories'],
        'password' => Hash::make($request['password']),

            ]);   
            $job_seeker->notify(new Job_seeker_Email_Verification($job_seeker));

            if (Auth::guard('job_seeker')->attempt(['email' => $request->email,
             'password' => $request->password], $request->remember)) {
                // if successful, then redirect to their intended location
                return redirect()->intended(route('job_seeker/jobs'));
              }  

контроллер проверки для job_seeker

public function __construct()
{
    $this->middleware('auth:job_seeker');
    $this->middleware('signed')->only('verify');
    $this->middleware('throttle:6,1')->only('verify', 'resend');
}

public function show(Request $request)
{
    return $request->user()->hasVerifiedEmail()
                    ? redirect($this->redirectPath())
                    : view('job_seeker.verify');
}

страница назначения

public function __construct()
    {
           $this->middleware('auth:job_seeker');
           $this->middleware('job_seeker_verified');
    }

    public function show_jobs(){
        return view('job_seeker.job_listing');
    }

электронная почта, полученная от

Если у вас возникли проблемы с нажатием кнопки «Подтвердить адрес электронной почты», скопируйте и вставьте приведенный ниже URL в свой веб-браузер: http://127.0.0.1:8000/job_seeker/email/verify/6?expires=1571589961&signature=0ac1b0ed2f8463094006ee3af2537771889c8fd598ad119c7be77c2b44e857d0

EnsureEmailIsПодлинное промежуточное ПО

  $guards = array_keys(config('auth.guards'));
    foreach($guards as $guard) {
        if ($guard == 'job_seeker') {

            if (Auth::guard($guard)->check()) {

                if (! Auth::guard($guard)->user() ||
                    (Auth::guard($guard)->user() instanceof MustVerifyEmail &&
                    ! Auth::guard($guard)->user()->hasVerifiedEmail())) {
                    return $request->expectsJson()
                            ? abort(403, 'Your email address is not verified.')
                            : Redirect::route('job_seeker/verify/notice');
                }  

            }

        }

        elseif ($guard == 'web') {

            if (Auth::guard($guard)->check()) {

                if (! Auth::guard($guard)->user() ||
                    (Auth::guard($guard)->user() instanceof MustVerifyEmail &&
                    ! Auth::guard($guard)->user()->hasVerifiedEmail())) {
                    return $request->expectsJson()
                            ? abort(403, 'Your email address is not verified.')
                            : Redirect::route('verification.notice');
                    }  

                }
            }

        }
...