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