Laravel Rbac
基於角色的權限管理拓展包
本拓展包是基於Laravel Permission的界面化封裝,用於快速搭建權限管理後臺
本拓展包運行基礎環境:
- Php >= 7.2
- Laravel >= 6.1
臨時DEMO
地址:http://202.182.110.252:8435/admin
賬號:[email protected]
密碼:admin&%@cv…
內容列表
聲明
本文中的 權限 也就是 laravel中的 路由
展示
面板首頁
用戶列表
用戶權限分配
菜單構建
路由列表
10分鐘內在線用戶
背景
造輪子造的很煩,但又找不到完全合適的輪子去用,所以只能自己造了。
Laravel Permission 項目很好用,但是不提供UI。本項目是基於Laravel Permission,在此基礎上,加上了UI,努力做到開箱即用。
本拓展包做到的功能:
- 基於角色的權限管理,一個用戶可以分配多個角色,一個角色可以分配多個權限
- 基於當前用戶所擁有的權限,動態生成菜單
- 一鍵更新最新權限
- 記錄用戶操作日誌,可使用隊列異步
- 後臺界面
安裝
推薦使用在Laravel新項目
記得先在php.ini中取消對exec
,shell_exec
,proc*
等方法的限制
修改配置文件.env
# change database, and key
# change cache
CACHE_DRIVER=redis
REDIS_CLIENT=predis
# suggest
QUEUE_CONNECTION=redis
在項目根目錄運行 composer
$ composer require ohhink/rrm
根目錄下運行資源發佈,此命令會增加配置文件(admin.php
,filesystems.php
,permission.php
),以及前端資源文件和數據庫填充文件
$ php artisan vendor:publish
$ php artisan vendor:publish --tag=seeds --force
根目錄下運行數據庫遷移填充命令
$ php artisan migrate:refresh --seed
設置文件夾權限和軟連接
$ chmod -R 777 storage
$ php artisan storage:link
至此,安裝完畢
使用說明
-
後臺默認路徑
/admin
, 此路徑可以在admin.php
中配置
安裝過程中,已經默認創建了一個超級管理員admin
賬號 : [email protected] 密碼 : admin&%@cv..
-
RBAC 的理念是,將權限賦予給角色,將角色賦予給用戶。一個角色可以有多個權限,一個用戶可以有多個角色。
所以使用以下步驟加入你的業務邏輯- 編寫好你的業務邏輯路由
- 通過路由檢測功能,獲取最新的權限,例如test
- 在 resources/vendor/rrm/zh-cn/permission.php 中創建對應的翻譯數據,若無此文件,可以自行創建此路徑下的 permission.php。例如將 test 翻譯爲 測試功能
- 給對應的角色分配該路由,例如給admin用戶分配測試功能
- 如果此功能爲菜單功能,需要新增菜單,並重新調整菜單佈局
-
如果你想重寫路由,請將以下代碼加入文件route/web.php
# this is rewrite the route to your app/Http/Controllers/IndexController.php index() Route::prefix(config('admin.prefix'))->middleware([ 'auth', 'admin' ])->name('admin.')->group(function () { Route::get('/', 'IndexController@index')->name('index'); });
在你的 app/Http/Controllers/IndexController.php 控制器中,你應該這樣寫
public function index() { // put your code here !!! return parent::index(); }
-
爲了使用右側菜單上的在線用戶功能,你需要在文件app/Console.Kernel.php中增加命令,如下
protected function schedule(Schedule $schedule) { // $schedule->command('inspire') // ->hourly(); $schedule->command('admin-tool:cache-online-users')->everyMinute(); }
同時,需要在服務器定時任務中,加入如下配置
* * * * * php /home/vagrant/blade_package/artisan schedule:run >> /dev/null 2>&1
-
因爲本項目自帶日誌記錄,用戶的每一步操作都會記錄下來。爲了避免響應過慢的問題,可以開啓異步記錄,提升響應速度。
想要修改爲異步,只需要將.env
文件中的QUEUE_CONNECTION=sync
修改爲QUEUE_CONNECTION=redis
當然,要使用redis,前提是已經加入PRedis包或者Redis服務 -
如果你想修改無權限報錯頁面(500),你可以創建 resource/views/vendor/rrm/500.blade.php 文件來重寫它
-
監聽隊列命令
php artisan queue:work --queue=logs --sleep=3 --tries=3 # 建議使用supervisor # supervisor配置文件 laravel-worker.conf [program:logs] process_name=%(program_name)s_%(process_num)02d command=php path_to/artisan queue:work --queue=logs --sleep=3 --tries=3 autostart=true autorestart=true user=root numprocs=2 redirect_stderr=true stdout_logfile=path_to/supervisor/logs.log 保存之後,運行 supervisorctl reload 加載配置
相關倉庫
- Laravel Permission - Associate users with permissions and roles
維護者
如何貢獻
非常歡迎你的加入! 有任何問題或者想要貢獻代碼,請提交 issue
使用許可
MIT © OhhInk