sehrgut / laravel-object-roles
该包已被 弃用 且不再维护。未建议替代包。
Laravel 的角色和权限,其中角色可以针对数据库对象进行管理
v0.1.1
2021-01-07 13:42 UTC
Requires
- illuminate/database: 6.*|7.*|8.*
Requires (Dev)
- phpunit/phpunit: ^7.2
This package is auto-updated.
Last update: 2023-03-07 18:58:20 UTC
README
Laravel 的角色和权限,其中角色可以针对数据库对象进行管理
目录
为什么?
有大量的包可以为 Laravel 应用添加 ACL 功能。然而,现有的解决方案似乎都不允许我们根据对象为用户分配角色。我们经常遇到的情况是需要定义全局角色,如 TECH_ADMIN
,同时也需要针对数据库对象,如 Organisation
的角色,例如有 EDITOR
用户,他们只在该特定的 Organisation
上被授予某些权限,而不在其他对象上。
免责声明
该包还处于早期阶段。目前它做了相当多的假设
- 用户存储在
users
表中 - 安装包和运行迁移时,
users
表已存在 users
表有一个主键id
,它是一个无符号整数- 以下表在安装包之前都不存在
roles
permissions
permission_role
role_user
入门
1. 安装包
composer require sehrgut/laravel-object-roles
2. 运行数据库迁移
php artisan migrate
3. 在 `User` 模型上使用 HasRolesAndPermissions
特性
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use SehrGut\LaravelObjectRoles\HasRolesAndPermissions; use SehrGut\LaravelObjectRoles\Models\Permission; class User extends Model { use HasRolesAndPermissions; }
文档
创建角色和权限
$permission = SehrGut\LaravelObjectRoles\Models\Permission::create([ 'name' => 'posts.update', 'description' => 'The ability to update existing Post objects', ]); $role = SehrGut\LaravelObjectRoles\Models\Role::create([ 'name' => 'EDITOR', 'description' => 'A User who can manage content', ]);
将权限分配给角色
$role->attachPermission('posts.update'); // or: $role->attachPermission($permission);
将角色分配给用户
$user->assignGlobalRole('EDITOR'); $user->assignObjectRole('EDITOR', $organisation);
检查权限
$user->hasGlobalPermission('posts.update') $user->hasPermissionThrough('show_statistics', $organisation)
许可
该项目遵循 MIT 许可。