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');
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');
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);
}