ipunkt / roles
为 ipunkt/permissions 包提供基于角色的权限检查
Requires
- php: >=5.4.0
- illuminate/support: 4.*
- ipunkt/permissions: dev-master
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)