拥有超过150个视图,其中包含编辑,查看和添加列的表格内容。我想根据用户角色限制视图。对于前者如果管理员登录,他可以看到所有选项,如果其他他只能添加不删除和编辑。我们怎样才能做到这一点?一种方法是为diff角色调用不同的视图,但这不是重复的,甚至有超过150个视图。
答案 0 :(得分:1)
您可以在视图中查看用户权限,然后确定用户应该能够看到什么以及不能看到什么。
@if(Auth::user()->admin)
<input name="website_logo_url" type="text" />
@endif
您可以使用中间件拒绝访问某些视图。
php artisan make:middlware MiddlewareName
答案 1 :(得分:0)
当你的数据库中有一个包含角色的表时,你可以在你的web.php文件中做这样的事情
Route::group(['middleware' => 'App\Http\Middleware\AdminMiddleware'], function() {
....
});
然后你制作一个名为“AdminMiddleware”的中间件或类似的东西。
您在该中间件组中设置的每条路径都限制在中间件文件中。看看这个中间件文件:
public function handle($request, Closure $next)
{
$allowed_role_ids = [2];
if (!in_array($request->user()->role_id, $allowed_role_ids))
{
return redirect('/')->with('flash', 'U heeft hier geen toegang voor');
} elseif(Auth::guest()) {
return redirect('/')->with('flash', 'U bent een gast, U heeft hier geen toegang voor');
}
return $next($request);
}
如果用户的请求角色ID不是允许的role_ID,则不允许访问该路由。如果是,它将重定向到所需的路线。我希望这可以解决您的问题。