根据用户角色和权限显示导航栏 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
我正在 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