根据用户角色和权限laravel

时间:2015-06-08 14:51:38

标签: php laravel-5 user-roles

我正在laravel 5中实现用户角色,我想根据用户权限更新导航栏。默认导航栏具有A,B和C菜单,可重定向到特定页面。让我们说用户1可以查看页面A和B,而用户2只能查看C.当用户1登录时,我希望导航栏只显示A和B菜单。我想在一个页面中执行此操作,并且不想为每个用户角色创建一个母版页(如我所建议的那样)。任何帮助或提示都表示赞赏。

1 个答案:

答案 0 :(得分:1)

首先,您需要解释如何在系统中设置角色。因此,请考虑以下示例有一些假设...

例如,如果您的User模型与Roles模型有关系,请执行以下操作:

public function roles()
{
    return $this->belongsToMany('\App\Role');
}

然后,您可以向User模型添加一个方法,以检查用户是否具有某个角色:

public function hasRole($name)
{
    foreach ($this->roles as $role) 
    {
        if ($role->name == $name) return true;
    }

    return false;
}

然后,您可以在导航视图中执行此类操作(使用刀片)

@if (Auth::user()->hasRole('admin'))
  <!-- nav links here -->           
@endif