Spatie权限:Laravel中多个页面上的多个角色

时间:2020-05-25 09:00:27

标签: php laravel roles laravel-permission

我有多个页面,一个用户可以在其中扮演多个角色。但是我无法在Spatie Permission中获得用户的分页角色。我怎样才能获得Spatie许可,如下所示:

Page  |  Role   | User |
------------------------
  A   |  Admin  |  1   |
  B   |  Member |  1   |
  A   |  Cashier|  2   |

1 个答案:

答案 0 :(得分:2)

使用Spatie设置角色和权限,然后在页面内,需要检查相关权限,这就是它的含义。但是,您始终可以使用自己的一组自定义权限处理来扩展Spatie。

即您可以使用每个用户有权访问的路由列表创建一个配置文件,然后添加一个辅助方法。

配置文件:

return [
    ROLE_ADMIN => [
        'route-name1',
        'route-name2',
        'route-name3',
    ],
    ROLE_MEMBER => ['route-name2'],
    ROLE_CASHIER => [],
];

许可方法:

hasPageAccess(string $role, string $routeName): bool  
{
    $permissions =  Arr::get(config('my-page-permissions'), $role, []);

    return !!array_search($routeName, $permissions);
}