人人爲我,我爲人人!Laravel RBAC 權限管理包,快速搭建後臺權限功能~

Laravel Rbac

English
中文

基於角色的權限管理拓展包

本拓展包是基於Laravel Permission的界面化封裝,用於快速搭建權限管理後臺

本拓展包運行基礎環境:

  1. Php >= 7.2
  2. Laravel >= 6.1

臨時DEMO
地址:http://202.182.110.252:8435/admin
賬號:[email protected]
密碼:admin&%@cv…

內容列表

聲明

本文中的 權限 也就是 laravel中的 路由

展示

面板首頁
dashboard

用戶列表
user list

用戶權限分配
user role assignment

菜單構建
menu build

路由列表
menu build

10分鐘內在線用戶
menu build

背景

造輪子造的很煩,但又找不到完全合適的輪子去用,所以只能自己造了。

Laravel Permission 項目很好用,但是不提供UI。本項目是基於Laravel Permission,在此基礎上,加上了UI,努力做到開箱即用。

本拓展包做到的功能:

  1. 基於角色的權限管理,一個用戶可以分配多個角色,一個角色可以分配多個權限
  2. 基於當前用戶所擁有的權限,動態生成菜單
  3. 一鍵更新最新權限
  4. 記錄用戶操作日誌,可使用隊列異步
  5. 後臺界面

安裝

推薦使用在Laravel新項目
記得先在php.ini中取消對execshell_execproc*等方法的限制

修改配置文件.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 的理念是,將權限賦予給角色,將角色賦予給用戶。一個角色可以有多個權限,一個用戶可以有多個角色。
    所以使用以下步驟加入你的業務邏輯

    1. 編寫好你的業務邏輯路由
    2. 通過路由檢測功能,獲取最新的權限,例如test
    3. resources/vendor/rrm/zh-cn/permission.php 中創建對應的翻譯數據,若無此文件,可以自行創建此路徑下的 permission.php。例如將 test 翻譯爲 測試功能
    4. 給對應的角色分配該路由,例如給admin用戶分配測試功能
    5. 如果此功能爲菜單功能,需要新增菜單,並重新調整菜單佈局
  • 如果你想重寫路由,請將以下代碼加入文件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 加載配置
    

相關倉庫

維護者

@OhhInk.

如何貢獻

非常歡迎你的加入! 有任何問題或者想要貢獻代碼,請提交 issue

使用許可

MIT © OhhInk

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章