Laravel菜单基于角色



我有代码点火器背景。现在,我正在学习拉拉威尔。所以,我在这种情况下(示例),我正在尝试创建一个有多个用户的网络应用程序。用户类型A,他们可以访问菜单A,菜单b&菜单c和用户类型B他们只能访问菜单a。

现在,我正在使用https://github.com/lavary/laravel-menu。好吧,如果它只有两种类型,我可以手动编写。但是,如果有五种或五种以上类型的用户呢。

当我使用代码点火器时。我创建了4个表UsersUsersTypeMenu&MenuAccess。你必须了解它是如何工作的。我只是,播放它的查询,然后我显示它。

用户类型(用户)->类型ID(用户类型)->菜单ID(菜单访问)->菜单Id(菜单)

我已经使用了谷歌,我发现了这个https://github.com/Zizaco/entrust,但我可以从那个包中看到什么。它只允许操作(输入、编辑和删除)

那么,我可以在我的laravel中做我的代码点火器吗?保存我的路由属性,然后在我的rouotes/web.php中显示(我不知道是否可能,还没有尝试)。对不起我的英语。

我要做的是在User类中放入一个函数,该函数检查自己的权限,然后返回一个包含用户可以访问的菜单的视图。

public function menu()
{
switch($this->role) {
case 'admin':
return view('menus.admin');
[etc]
}
}

然后在视图中只需检查用户是否已登录并显示菜单:

@if Auth::check()
{{ Auth::user->menu() }}
@endif

正如评论中所提到的,听起来您想要的是能够根据用户是否具有特定权限来有条件地显示内容。

这有很多实现方式。从本质上讲,它们都是存储可以授予用户的权限,并可以选择存储允许将权限分配给某个角色的角色,然后用户可以被赋予该角色,自动授予与该角色相关联的权限。

我发现spatie/laraavel权限似乎很好。然后,如果您将用户模型传递到视图中,您可以执行以下操作:

@if ($user->can('edit-posts'))
<a>Edit post</a>
@endif

这应该足够灵活,可以对不同的权限进行重用。如果这不起作用,那么使用Laravel的授权系统滚动您自己的权限系统并不困难,您应该能够以相同的方式使用can()方法。

最新更新