Setting up custom middleware such as isAdmin

It can be done in following steps so that only admin role users can access those specified routes.

Step 1: Defining middleware in app/Http/Middleware/isAdmin.php

namespace App\Http\Middleware;
use Closure;

   
class IsAdmin
{
	/**
	 * Handle an incoming request.
	 *
	 * @param  \Illuminate\Http\Request  $request
	 * @param  \Closure  $next
	 * @return mixed
	 */

	public function handle($request, Closure $next)
	{
		if(auth()->user()->role == 'admin'){
			return $next($request);
		}

		return redirect()->route( 'feeds' )->with('error',"You don't have admin access.");
	}
}


Step 2: Registering middleware in App\Http\Kernal.php

'is_admin' => \App\Http\Middleware\IsAdmin::class,


Step 3: Using middleware with Route group

Route::group(['middleware'=> ['is_admin']], function() {
	// All is_admin related routes will go here
});


Lastly, another way to specify the is_admin middleware on a specific route is like following

Route::get('/yourRoute', [YourController::class, 'controller_method'])->middleware('is_admin')

Related Posts