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