Применить Laravel 5.7 MustVerifyEmail в системе множественной аутентификации - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь применить Laravel-5.7 MustVerifyEmail в системе множественной аутентификации. Пока что я сделал следующее:

  1. созданы проверочные маршруты для охраны «аудитора».
  2. перезаписать метод show в контроллере проверки новым видом.
  3. Реализовано новое уведомление в модели аудитора.
  4. Создано, зарегистрировано и применено новое промежуточное ПО под названием 'auditor.verified'

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

Там должно быть что-то, что я пропустил.

Вот файл проекта на GitHub

Заранее спасибо за помощь.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2019

M.Islam ответ хороший, но не забудьте напрямую изменить исходные файлы в EnsureEmailIsVerified. В противном случае ваши изменения могут быть потеряны всякий раз, когда вы обновляете $ composer или отправляете в производство.

0 голосов
/ 11 ноября 2018

Наконец, после четырех дней исследований я смог решить проблему.

Я изменил промежуточное ПО «EnsureEmailIsVerified» следующим образом:

<?php

namespace Illuminate\Auth\Middleware;

use Closure;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Support\Facades\Auth;

class EnsureEmailIsVerified
{

/**
 * Handle an incoming request.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  \Closure  $next
 * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse
 */
public function handle($request, Closure $next, $guard = null)
{

    $guards = array_keys(config('auth.guards'));

    foreach($guards as $guard) {

        if ($guard == 'admin') {

            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('admin.verification.notice');
                }  

            }

        }

        elseif ($guard == 'auditor') {

            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('auditor.verification.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');
                    }  

                }
            }

        }

        return $next($request);
    }
}

И это решило мою проблему.

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