thoth-pharaoh/permission

权限管理器

v2.0.1 2023-02-24 11:38 UTC

README

管理者通过管理组group来管理各个权限项

关联图

alt text

版本匹配

安装

你可以使用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名称为主