根据用户角色和权限显示导航栏 laravel

displaying navbar according to user roles and permisions laravel

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

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

例如,如果您的 User 模型与 Roles 模型有关系,那么:

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

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

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

    return false;
}

然后您可以在导航视图中执行类似的操作(使用 blade)

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