Skip to content

castion2293/permission

Repository files navigation

權限管理器

管理者 透過管理群組 group 來管理各個權限項目

關聯圖:

alt text

版本匹配

Laravel package
8.X 1.X
9.X 2.X

安裝

你可以使用 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);
參數 說明 類型 範例
$groupId 管理群組ID int 1

獲取管理者所屬群組

$user->belongGroup();

使用 getPermissions 方法獲取該管理者所擁有的權限

$user->getPermissions();

使用 getPermissions 方法取得該群組的所有管理權限

$group->getPermissions();

使用 addPermissions 方法更新該管理群組的權限

$group->addPermissions($permissionKeys);
參數 說明 類型 範例
$permissionKeys 權限代碼 array [1101, 1102, 1103]

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

About

權限管理器

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages