Laravel 5.7 много аутентификации проверки подлинности электронной почты - PullRequest
0 голосов
/ 22 сентября 2019

Я новичок в Laravel и пытаюсь настроить подтверждение электронной почты для job_seeker, но после регистрации нового job_seeker я перенаправляю на страницу профиля, которая в обычном случае должна быть защищена промежуточным программным обеспечением job_seeker_verified.Я должен перенаправить на job_seeker/verify, который использует маршрут с именем job_seeker_verification.notice с контроллером verification_controller и функцию, которая показывает представление с проверочным сообщением, но вместо этого я получаю

запрещенную страницу 403

namespace App\Http\Controllers\job_seeker;

use App\Job_seeker;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class job_seeker_profile_controller extends Controller
{
    public function __construct()
    {
        $this->middleware(['job_seeker_auth', 'job_seeker_verified']);
    }

    public function show_profile(Job_seeker $job_seeker)
    {
        return view('profile.job_seeker_profile');
    }
}
namespace App\Http\Middleware;

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

class Ensure_Job_Seeker_Is_Verified
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next, $guard = null)
    {
        $guard == 'job_seeker';
        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_verification.notice');
        }
        return $next($request);
    }
}
namespace App\Http\Controllers\job_seeker;

use Illuminate\Http\Request;
use App\Job_seeker;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\VerifiesEmails;

class Verification_Controller extends Controller
{
    use VerifiesEmails;
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    protected $redirectTo = 'job_seeker.profile';
    public function __construct()
    {
        $this->middleware('job_seeker_auth');
        $this->middleware('signed');
        $this->middleware('throttle:6,1')->only('resend');
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show(Request $request)
    {
        return $request->user()->hasVerifiedEmail()
            ? redirect($this->redirectPath())
            : view('profile.job_seeker_verify');
    }
    public function verify(Request $request)
    {
        if ($request->route('id') != $request->user()->getKey()) {
            throw new AuthorizationException;
        }

        if ($request->user()->hasVerifiedEmail()) {
            return redirect($this->redirectPath());
        }

        if ($request->user()->markEmailAsVerified()) {
            event(new Verified($request->user()));
        }

        return redirect($this->redirectPath())->with('job_seeker_verified', true);
    }
}
Route::get('job_seeker_email.resend', [
    'as'=>'job_seeker_email.verification.resend', 'uses'=>'job_seeker\Job_Seeker_Verication_email@resend'
    ]);
Route::get('job_seeker/verify', [
    'as'=>'job_seeker_verification.notice', 'uses'=>'job_seeker\Verification_Controller@show'
    ]);
Route::get('job_seeker/verify/{id}', [
    'as'=>'job_seeker_verification.verify','uses'=>'job_seeker\Verification_Controller@verify'
    ]);

1 Ответ

0 голосов
/ 22 сентября 2019

Удалить

$this->middleware('job_seeker_auth');

Из конструктора verification_controller, потому что он возвращает 403, прежде чем достигнет метода show или verify
Непроверенный пользователь не может проверить себя, если ему необходимобыть проверенным, чтобы сделать это

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