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 名稱為主