【问题标题】:Laravel - How to create multiple user roles and assign privilege to them?Laravel - 如何创建多个用户角色并为他们分配权限?
【发布时间】:2018-04-29 13:52:59
【问题描述】:
我必须创建一个应用程序,其中有 5 种类型的帐户
那么如何使用 Laravel 创建这些多个帐户,我应该为每个帐户使用不同的中间件组。另外,我必须为所有人创建权限。
目前,我将它与每个中间件和会话一起使用,并在 DB 中为每个单独的表使用它,但我认为这不是一个好方法。
用 Laravel 创建这些多个帐户的方法是什么。
@谢谢
【问题讨论】:
标签:
php
mysql
laravel-5
laravel-5.3
【解决方案2】:
正如@Fawzan 所说,如果您只使用角色(或组),那么只需创建一个组表,然后将每个用户链接到适当的组。然后,您将拥有一个 user 表,其中每个用户都有一个 groupID。
然后您可以创建一个刀片指令来帮助您在应用程序中检查用户是否具有特定角色。 (将其放在您的 AppServiceProvider 中)
Blade::directive('hasRole', function ($role) {
return auth()->user()->role->name = $role;
});
// Or a little more performant if you call the directive many times.
$roles = Role::all()->pluck('id', 'name')->toArray();
Blade::directive('hasRole', function ($role) use ($roles) {
return auth()->user()->roleID == $roles[$role];
});
【解决方案3】:
您可以在 users 表中添加一个名为 user_type 的列,然后
例如,为每个用户插入十进制值
Super admin = 1;
Inventory admin = 2;
Shop owner = 3;
Shop manager = 4;
User = 5;
并且基于 user_type 你可以做你所有的操作。