These changes allow for more efficient request throttling by utilizing Redis. The new EnsureUserIsVerified middleware improves security by validating that a user's email has been verified or if the user is active before granting access, returning a 403 error if the user fails these checks.
		
			
				
	
	
		
			44 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			44 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php declare(strict_types=1);
 | |
| 
 | |
| namespace App\Http\Middleware;
 | |
| 
 | |
| use Closure;
 | |
| use Illuminate\Contracts\Auth\MustVerifyEmail;
 | |
| use Illuminate\Support\Facades\Redirect;
 | |
| use Illuminate\Support\Facades\URL;
 | |
| 
 | |
| final class EnsureUserIsVerified
 | |
| {
 | |
|     /**
 | |
|      * Handle an incoming request.
 | |
|      *
 | |
|      * @param  \Illuminate\Http\Request  $request
 | |
|      * @param  \Closure  $next
 | |
|      * @param  string|null  $redirectToRoute
 | |
|      * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse|null
 | |
|      */
 | |
|     public function handle($request, Closure $next, $redirectToRoute = null)
 | |
|     {
 | |
|         if (! $request->user()) {
 | |
|             return $request->expectsJson()
 | |
|                 ? abort(403)
 | |
|                 : Redirect::guest(URL::route($redirectToRoute ?: 'verification.notice'));
 | |
|         }
 | |
| 
 | |
| 
 | |
|         if ($request->user() instanceof MustVerifyEmail && ! $request->user()->hasVerifiedEmail()) {
 | |
|             return $request->expectsJson()
 | |
|                 ? abort(403, 'Your email address is not verified.')
 | |
|                 : Redirect::guest(URL::route($redirectToRoute ?: 'verification.notice'));
 | |
|         }
 | |
| 
 | |
|         if ($request->user()->is_active === false) {
 | |
|             return $request->expectsJson()
 | |
|                 ? abort(403, 'User disabled.')
 | |
|                 : Redirect::guest(URL::route($redirectToRoute ?: 'verification.notice'));
 | |
|         }
 | |
| 
 | |
|         return $next($request);
 | |
|     }
 | |
| }
 |