PHPFixing
  • Privacy Policy
  • TOS
  • Ask Question
  • Contact Us
  • Home
  • PHP
  • Programming
  • SQL Injection
  • Web3.0

Saturday, July 2, 2022

[FIXED] How to allow guest access to page while still using "middleware:('verified')" on Laravel 5.8?

 July 02, 2022     laravel-5.8, php, xampp     No comments   

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)
  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
Newer Post Older Post Home

0 Comments:

Post a Comment

Note: Only a member of this blog may post a comment.

Total Pageviews

Featured Post

Why Learn PHP Programming

Why Learn PHP Programming A widely-used open source scripting language PHP is one of the most popular programming languages in the world. It...

Subscribe To

Posts
Atom
Posts
Comments
Atom
Comments

Copyright © PHPFixing