Laravel用户角色访问视图中的内容

时间:2018-02-13 13:12:08

标签: php laravel-5 middleware

拥有超过150个视图,其中包含编辑,查看和添加列的表格内容。我想根据用户角色限制视图。对于前者如果管理员登录,他可以看到所有选项,如果其他他只能添加不删除和编辑。我们怎样才能做到这一点?一种方法是为diff角色调用不同的视图,但这不是重复的,甚至有超过150个视图。

2 个答案:

答案 0 :(得分:1)

Blade中的条件渲染

您可以在视图中查看用户权限,然后确定用户应该能够看到什么以及不能看到什么。

@if(Auth::user()->admin) 
    <input name="website_logo_url" type="text" />
@endif

使用中间件

您可以使用中间件拒绝访问某些视图。

答案 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,则不允许访问该路由。如果是,它将重定向到所需的路线。我希望这可以解决您的问题。