thoth-pharaoh / permission
权限管理器
v2.0.1
2023-02-24 11:38 UTC
Requires
- php: ^8.0
- ext-json: *
- illuminate/support: >=9.0
Requires (Dev)
- laravel/legacy-factories: ^1.1
- orchestra/testbench: ^7.0
README
管理者通过管理组group来管理各个权限项
关联图
版本匹配
安装
你可以使用composer进行安装
composer require thoth-pharaoh/permission
Migrate数据表
php artisan migrate
导出Config
php artisan vendor:publish --tag=permission-config
导出Migration
php artisan vendor:publish --tag=permission-database
必须先在config/permission.php中设置权限内容
使用方法
使用Trait
在想要使用权限管理的model中引入HasPermission Trait
use Pharaoh\Permission\Traits\HasPermission; class User extends Authenticatable { use HasPermission; }
管理者加入一个管理组
$user->addGroup($groupId);
获取管理者所属组
$user->belongGroup();
使用getPermissions方法获取该管理者所拥有的权限
$user->getPermissions();
使用getPermissions方法获取该组的所有管理权限
$group->getPermissions();
使用addPermissions方法更新该管理组的权限
$group->addPermissions($permissionKeys);
$permissionKeys代码以config.permission.php中items内定义为主
使用deleteGroup方法删除该管理组及对应权限
$group->deleteGroup();
使用Middleware
先注册permission middleware
App\Http\Kernel.php
protected $routeMiddleware = [ ... 'permission' => \Pharaoh\Permission\Middleware\Permission::class ];
在需要检查权限的路由中加入permission middleware及权限代码(代码以config.permission.php为主)
Route::middleware(['auth:user', 'permission:1102'])->get('/user', 'PostController@index');
检查多组权限
Route::middleware(['auth:user', 'permission:1102,1103,1104'])->get('/user', 'PostController@index');
permission middleware需设置至auth middleware之后
需要group model反查关联的model数据
动态绑定group多对多多行关联
AppServiceProvider.php
public function boot() { // 動態綁定 groups <-> users 多對多 多型關聯 Group::resolveRelationUsing('users', function ($groupModel) { return $groupModel->morphedByMany(User::class, 'groupable'); }); }
使用Artisan Command添加root group所有权限
php artisan update:root-group-permission
root group以config.permission.php中,字段root_group_name名称为主