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

Spatie Permission: Multiple Roles on Multiple Pages in Laravel

我有多个页面,其中一个用户可以有多个角色。但是我无法在 Spatie Permission 中获得用户的分页角色。我怎样才能像下面这样获得 Spatie 权限:

Page  |  Role   | User |
------------------------
  A   |  Admin  |  1   |
  B   |  Member |  1   |
  A   |  Cashier|  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);
}