Laravel - 如何创建多个用户角色并为其分配权限?

时间:2017-11-16 06:00:48

标签: php mysql laravel-5 laravel-5.3

我必须创建一个应用程序,其中有5种类型的帐户

  • 超级管理员
  • 广告资源管理员
  • 店主
  • 店长
  • 用户

那么我如何使用Laravel创建这些多个帐户,我应该为每个帐户使用不同的中间件组。另外,我必须为所有人创造特权。

目前,我使用的是每个不同的中间件和会话以及每个DB中的单独表格,但我不这么认为这是一个很好的方法。

使用Laravel创建这些多个帐户的方法是什么。

@Thanks

3 个答案:

答案 0 :(得分:1)

除了提供身份验证服务外,Laravel还提供了一种针对给定资源授权用户操作的简单方法。 Laravel对授权的方法很简单,授权操作有两种主要方式:门和政策。有关更多详细信息,请参阅Laravel文档。

Authorization in Laravel 5.5

答案 1 :(得分:0)

您可以向名为user_type和的用户表添加一列 为每个用户插入十进制值,例如

Super admin = 1; 
Inventory admin = 2; 
Shop owner  = 3; 
Shop manager = 4; 
User = 5;

并且基于user_type,您可以执行所有操作。

答案 2 :(得分:0)

正如@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];
});