套件名稱 : Virtualorz/Permission
開發年份 : 2019
gitHub連結 : https://github.com/virtualorz/permission
依賴套件 : Virtualorz/ActionLog , Virtualorz/Sitemap
內容簡介 :
提供最基礎的登入檢查、權限檢查以及快速權限設定畫面產生以及CRUD內容,依賴bootstrap,可以快速的產生CRUD畫面以及功能
依賴於Virtualorz/Sitemap結構,可以從laravel rout中直接產生所有頁面權限樹狀圖,並且依賴Virtualorz/ActionLog寫下權限CRUD的操作紀錄
安裝方式 :
1 |
composer require virtualorz/permission |
編輯 config/app.php
1 2 3 4 5 6 7 8 9 |
'providers' => [ ... Virtualorz\Permission\PermissionServiceProvider::class ] 'aliases' => [ ... 'Permission' => Virtualorz\Permission\Facades\Permission::class, ] |
發布資料 :
1 |
php artisan vendor:publish --provider="Virtualorz\Permission\PermissionServiceProvider" |
執行Migration :
1 |
php artisan migrate --path=/vendor/virtualorz/actionlog/src/migrations |
編輯 config/permission_identity
1 2 3 4 5 6 |
'identity' => [ 1 => 'Member', 2 => 'Manager', 3 => 'Administrator' ], 三種不同權限類型可以自行命名 |
編輯 .env
1 2 3 4 5 |
加入以下參數 LOGINSESSION : 後台管理員登入儲存用session變數名稱 LOGINSESSION_CUSTOMER : 前台會員登入儲存用session變數名稱 LOGINPAGE : 後台管理員登入頁面Route名稱 LOGINPAGE_CUSTOMER : 前台客戶登入頁面Route名稱 |
使用方式 :
建立middleware,在middleware中呼叫 ‘checkLogin’ , ‘checkLoginCustomer’ , ‘checkPermission’ 登方法,用於確認管理員、客戶是否登入,以及管理員是否有頁面使用權限
使用範例 :
1.在middleware中使用checkLogin
1 2 3 4 5 6 7 8 |
$result = Permission::checkLogin($request); if($result !== true){ return $result; } else{ return $next($request); } |
2.在middleware中使用checkLoginCustomer
1 2 3 4 5 6 7 8 |
$result = Permission::checkLoginCustomer($request,['hash'=>'0098765']); if($result !== true){ return $result; } else{ return $next($request); } |
3.在middleware中使用checkPermission
1 2 3 4 5 |
$result = Permission::checkPermission(); if($result){ return $next($request); } |
4.在VIew中建立權限樹狀圖
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
include in blade <link rel="stylesheet" href="{{ asset('vendor/treeView/bootstrap-treeview.css') }}"> <script src="{{ asset('vendor/treeView/bootstrap-treeview.js') }}"></script> <script src="{{ asset('vendor/treeView/permission_tree.js') }}"></script> in HTML <input type="hidden" id="tree_node" value="{{ $sitemap }}"> <!-- this to generate tree--> <input type="hidden" name="permission" id="permission" value="[]"> <!-- thid to save tree value--> before form submit $("#permission").val(JSON.stringify($('#treeview').treeview('getChecked'))); in Controller, use sitemap to generate JSON $sitemap = Sitemap::getTreeView(); $sitemap = Sitemap::routStruct('root',$sitemap); $sitemap = json_encode($sitemap); |
方法簡介 :
1.checkLogin($request)
檢查管理員是否已經登入,如果是回傳true, 否則依據env(‘LOGINPAGE)重新導向到登入頁面
2.checkLoginCustomer($request,$parameter)
檢查前台會員是否已經登入,如果是回傳true, 否則依據env(‘LOGINPAGE_CUSTOMER’)重新導向到登入頁面,並且帶入$parameter到route參數
3.checkPermission
檢查管理員是否有使用此頁面的權限,如果有則會傳true,沒有則直接跳出403沒有權限頁面
4.groupList($keyword = null,$page = 15)
用於後台建立權限群組CRUD,列表所有全組名稱,$keyword用於搜尋,$page用於分頁顯示每個頁面多少筆資料
5.groupAdd($column)
用於後台建立權限群組CRUD,新增一個權限群組,
$column[‘name’] : 群組名稱
$column[‘identity’] : 身份別,定義於config/permission_identity中
$column[‘permission] : 權限樹狀圖回傳之陣列(JSON)
6.getGroupItem($id)
用於後台建立權限群組CRUD,取得id = $id 之群組資料
7.groupEdit($column)
用於後台建立權限群組CRUD,編輯一個權限群組,
$column[‘name’] : 群組名稱
$column[‘identity’] : 身份別,定義於config/permission_identity中
$column[‘permission] : 權限樹狀圖回傳之陣列(JSON)
$column[‘id’] : 要編輯之資料ID
8.groupDelete($column)
用於後台建立權限群組CRUD,刪除id = $column[‘id’]之資料
9.permissionList($keyword = null,$page = 15)
用於後台建立人員權限CRUD,列表所有人員名稱,$keyword用於搜尋,$page用於分頁顯示每個頁面多少筆資料
10.getPermissionItem($id)
用於後台建立人員權限CRUD,取得人員id = $id 之權限資料
11.permissionEdit($column)
用於後台建立人員權限CRUD,編輯人員權限
$column[‘select’] : 已選擇之權限群組ID(Array)
$column[‘id’] : 人員ID
12.permissionDelete($column)
用於後台建立人員權限CRUD,刪除人員ID = $id之權限資料
備註 :
權限樹狀圖使用bootstrap tree-view套件處理,顯示如下
最新版本請參考gitHub連結說明