Hell to all, welcome to therichpost.com. In this post, I will tell you, how to Create a Laravel custom middleware class that checks the user’s role?
Laravel now a days top php mvc framework. I am also learning laravel.
Here we start the code for Laravel custom middleware class that checks the user’s role:
1. First, we will create middleware with artisan command:
php artisan make:middleware Checkrole
2. Above command creates a file called Checkrole.php within the app/Http/Middleware directory that looks like and I have modified code little bit as my requirement for check user role:
<?php
namespace App\Http\Middleware;
use Closure;
class Checkrole
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
// hasRole being a function defined on your User model that checks
// a user's assigned role(s).
if (auth()->check() && auth()->user()->hasRole('BETA Tester')) {
return $next($request);
}
abort(401, 'You are not allowed to access this page');
}
}
3. You then need to add the Checkrole Middleware to your app/Http/Kernel.php file:
protected $routeMiddleware = [
'auth' => 'App\Http\Middleware\Authenticate',
'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth',
'guest' => 'App\Http\Middleware\RedirectIfAuthenticated',
'admin' => 'App\Http\Middleware\Checkrole', // this line right here
];
4. You can use the Checkrole Middleware to a route. (Within your routes.php file):
get('protected', ['middleware' => ['auth', 'checkuser'], function() {
return "this page requires that you be logged in and an Admin";
}]);
This is it, if you have any query related to this post, then please do comment or email me.
