ipunkt/roles

为 ipunkt/permissions 包提供基于角色的权限检查

dev-master 2014-09-24 13:08 UTC

This package is not auto-updated.

Last update: 2024-09-24 03:19:37 UTC


README

关于

为 ipunkt/permissions 提供基于角色的权限检查

安装

将以下行添加到 composer.json 中

"require": {
	"ipunkt/roles": "dev-master"
}

配置

添加

'Ipunkt\Roles\RolesServiceProvider'

到你的服务提供者列表。

通过以下方式迁移

php artisan migrate --package=ipunkt/roles

工作原理

  • 资源类型有可以对其执行的操作。
  • 角色有执行操作权限。
  • 权限可以影响整个资源类型或单个资源。
  • 单个资源的权限比整个资源类型的权限优先。
  • 用户有角色。

特殊名称

名称 \* 对于操作和资源都是特殊的。
当用于操作时,它将匹配所有操作
当用于资源时,它将匹配所有资源

但是请注意,更具体的权限优先于这个。例如
子管理员角色具有在 '*' 上执行 '*' 的权限,子管理员角色禁止在 'supersecrettable' 上执行 '*'

$userWithSubadmin->can('anything', $superSecretModel) 将返回 false,因为 *.supersecrettable 比 *.* 更具体

使用

检查权限

Ipunkt\Roles\PermissionChecker\RolePermissionChecker 将作为 ipunkt\permissions 的默认权限检查器,除非你在配置中禁用它。

有三种方式使用此包

  • 命令
  • Web 界面
  • 通过仓库

命令

Web 界面

Web 界面通过 ipunkt/permissions 进行自我保护,所以请确保你有在资源和角色上执行 * 的权限。
待办事项:配置变量以完全禁用 Web 界面

资源

访问 /permissions/privilege 或路由 permissions.privilege.index

创建角色

访问 /permissions/role 或路由 permissions.role.index

通过仓库

Ipunkt\Roles\Roles\RoleRepositoryInterface 通过仓库注入以处理角色。Ipunkt\Roles\Resources\ResourceRepositoryInterface 通过仓库注入以处理资源。

高级使用

理论上可以通过实现不同 ORM/数据库的 RoleInterface、PermissionInterface 和 PrivilegeInterface 来替换默认的 eloquent 角色,并替换仓库。但是这尚未经过测试。

分配角色

有一个名为 ipunkt/auth-roles 的包,它将这些角色与 ipunkt/auth 用户连接起来,并提供了分配角色的接口。

如果您希望实现自己的用户模型连接,请确保在 IoC 中覆盖 Ipunkt\Permissions\Repositories\RoleRepositoryInterface。最简单的方法是扩展 EloquentRoleRepository 并覆盖 allByUserId($id)