Issue
I want the guest to access Home and Shop page and still verifies email when a user wants to register.
Route::get('/home', 'HomeController@index')->name('home')->middleware('verified');
Solution
The EnsureEmailIsVerified
middleware requires the user to be logged in to access any pages protected with it.
You can see this check in the code for the middleware
if (!$request->user() ||
($request->user() instanceof MustVerifyEmail &&
!$request->user()->hasVerifiedEmail())) {
// reject
}
If you want to allow guests to access the page, and still require users to be activated you will need to create a custom middleware.
php artisan make:middleware GuestOrActivated
Then, for the handle
function:
public function handle($request, Closure $next, $redirectToRoute = null)
{
if ($request->user() && $request->user() instanceof MustVerifyEmail && !$request->user()->hasVerifiedEmail()) {
return $request->expectsJson()
? abort(403, 'Your email address is not verified.')
: Redirect::route($redirectToRoute ?: 'verification.notice');
}
return $next($request);
}
Answered By - atymic Answer Checked By - Gilberto Lyons (PHPFixing Admin)
0 Comments:
Post a Comment
Note: Only a member of this blog may post a comment.