【问题标题】:displaying navbar according to user roles and permisions laravel根据用户角色和权限显示导航栏 laravel
【发布时间】:2015-08-23 02:42:30
【问题描述】:
我在 laravel 5 中实现用户角色,我想根据用户权限更新导航栏。默认导航栏具有重定向到特定页面的 A、B 和 C 菜单。假设用户 1 可以查看页面 A 和 B,而用户 2 只能查看 C。当用户 1 登录时,我希望导航栏仅显示 A 和 B 菜单。我想在一个页面中执行此操作,并且不想为每个用户角色创建一个母版页(正如我所建议的那样)。任何帮助或提示表示赞赏。
【问题讨论】:
标签:
php
laravel-5
user-roles
【解决方案1】:
首先,您需要说明您的角色是如何在系统中设置的。所以考虑下面的例子有一些假设......
例如,如果您的 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;
}
然后您可以在导航视图中执行类似的操作(使用刀片)
@if (Auth::user()->hasRole('admin'))
<!-- nav links here -->
@endif