在我的项目中,我有4个用户类型,超级管理员,管理员,主管和用户。超级管理员和超级管理员可以看到相同的页面,并且具有相同的路由,它们之间的区别在控制器中是可区分的,控制器只有6条路由,约占超级管理员的一半,而用户只能看到仪表板。
现在我正在尝试在web.php中设置路由,但是超级管理员,admin可以工作,而不是Director或Director的路由工作,而其他两个则不能。我在做什么错了?
中间件SuperAdmin
public function handle($request, Closure $next)
{
$user = Auth::user();
if (auth()->check() && $user->isSuperAdmin()) {
return $next($request);
}
return redirect('/');
}
中间件管理员
public function handle($request, Closure $next)
{
$user = Auth::user();
if (auth()->check() && $user->isAdmin() || $user->isSuperAdmin()) {
return $next($request);
}
return redirect('/');
}
中间件主管
public function handle($request, Closure $next)
{
$user = Auth::user();
if (auth()->check() && $user->isDirector()) {
return $next($request);
}
return redirect('/');
}
在web.php中
//Auth and login routes
Route::group(['middleware' => 'auth'], function () {
Route::resource('/', 'DashController');
Route::get('/logout')->name('logout')->uses('Auth\LoginController@logout');
Route::group(['middleware' => 'App\Http\Middleware\AdminMiddleware'], function () {
//All the routes are in this group
});
Route::group(['middleware' => 'App\Http\Middleware\DirectorMiddleware'], function () {
//Corresponding routes for director here
});
});
在我的Kernel.php中
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'admin' => \App\Http\Middleware\AdminMiddleware::class,
'super' => \App\Http\Middleware\SuperAdminMiddleware::class,
'director' => \App\Http\Middleware\DirectorMiddleware::class,
//other default ones
];
我在做错什么,是使所有这些人一起工作而不仅仅是一次工作的正确方法是什么?