Laravel5.1 Entrust拡張パッケージに基づくRBAC権限制御モジュール(他のプロジェクトへの移行方法)


Laravel5.1 Entrust拡張パッケージに基づくRBAC権限制御モジュール(他のプロジェクトへの移行方法)
ほとんどのプロジェクトでは、権限制御が必要です.私たちのプロジェクトはLaravel 5を使用しています.1のフレームワーク、Entrust拡張パッケージに基づいて、共通のRBAC権限制御モジュールを書いて、後続の他のプロジェクトが必要なときに直接移行して使用することができます.
githubアドレス:https://github.com/NancyLin/l...プロジェクトのアドレス:[email protected]:NancyLin/laravel-rbac.git
注意して、もしプロジェクトを自分のコンピュータの上でテストするならば、修正します.Envのデータベース設定は、storageとbootstrap/cacheディレクトリを読み取り/書き込み可能な権限に変更します.
RBACモジュールを自分のプロジェクトに移行する方法は次のとおりです.
(1)インストール構成Entrust拡張パッケージ
具体的なインストール構成方法については、以下のリンクを参照してください.ここでは説明しません.
https://github.com/Zizaco/entrust
(2)インストール構成が完了したら、当社の実際のニーズに応じて、関連データテーブルフィールドを変更します.
#             
ALTER TABLE `users` ADD COLUMN `is_super` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '       ';

#            、
ALTER TABLE `permissions` ADD COLUMN `p_id` INT(10) NOT NULL DEFAULT 0  COMMENT '    ID' AFTER `id`;
#            
ALTER TABLE `permissions` ADD COLUMN `is_menu` TINYINT(1) NOT NULL DEFAULT 0  COMMENT '      ' AFTER `description`;
#            
ALTER TABLE `permissions` ADD COLUMN `sort` TINYINT(4) NOT NULL DEFAULT 0  COMMENT '  ' AFTER `is_menu`;

#     display_name       
ALTER TABLE `permissions` Modify COLUMN `display_name` VARCHAR(255) NOT NULL DEFAULT ''  COMMENT '    ';
#     description       
ALTER TABLE `permissions` Modify COLUMN `description` VARCHAR(255) NOT NULL DEFAULT ''  COMMENT '  ';

(3)プロファイルの変更
  • config/entrust.phpは、対応するroleとpermissionのmodelを指定します.
  • 'role' => 'App\Models\Role',
    
    'permission' => 'App\Models\Permission',
  • .Env,CACHE_の変更DRIVER
  • CACHE_DRIVER=array

    (4)登録権限制御ミドルウェア
    このdemoでは、権限制御が必要なコントローラに対して中間部品方式を採用しており、app/Http/Kernelが必要である.phpの$routeMiddlewareにミドルウェアを登録します.
    $routeMiddleware = [
     ....
      //     
      'permission' => \App\Http\Middleware\AuthPermission::class,
    ]

    (5)UserモデルにEntrustUserTraitを導入する
    このdemoではappUser.phpに次のコードを追加します.
    use Zizaco\Entrust\Traits\EntrustUserTrait;
    
    class User extends Model implements AuthenticatableContract, CanResetPasswordContract
    {
        ...
        use EntrustUserTrait;
        ...
    }

    (6)関連モジュールのルーティング登録
    ここでphpに関連するルーティングを登録する
    Route::group(['middleware' => ['auth']], function(){
        Route::get('home', 'HomeController@index');
        Route::controller('check', 'CheckController');
        Route::controller('load', 'LoadBaseDataController');
    
        Route::get('user', 'Rbac\UserController@index');
        Route::controller('user', 'Rbac\UserController');
    
        Route::get('role', 'Rbac\RoleController@index');
        Route::controller('role', 'Rbac\RoleController');
    
        Route::get('permission', 'Rbac\PermissionController@index');
        Route::controller('permission', 'Rbac\PermissionController');
    });

    (7)RBAC関連モジュールのコードファイルまたはフォルダを対応づけて自分の項目にコピーする
    関連するモジュールファイルまたはフォルダは次のとおりです.
  • =appHttpControllersRbac=のすべての関連モジュールコントローラをコピーします.
  • コピー=appHttpControllers AdminController.php==汎用コントローラを管理し、権限制御ミドルウェアのコントローラを実行するには、クラスを継承できます.
  • コピー=appHttpControllers CheckController.php==データコントローラを検証します.
  • コピー=appHttpControllersLoadBaseDataController.php==ベースデータコントローラをロードします.
  • コピー=appHttpMiddlewareAuthPermission.php==権限制御ミドルウェア.
  • コピー=appModelsRole.php==キャラクタモデル.
  • コピー=appModelsPermission.php==権限model.
  • コピー=appPresentersRbacPresenter.php==Rbacビュー論理処理クラス.
  • コピー=appRepositoriesRepository.php==データmodelベースロジック処理クラス.
  • コピー=appRepositoriesUserRepository.php==ユーザmodelベースロジック処理クラス.
  • コピー=appRepositoriesRoleRepository.php==ロールmodelベースロジック処理クラス.
  • コピー=appRepositoriesPermissionRepository.php==権限model基礎論理処理クラス.
  • コピー==publiccss==の下のすべてのファイルとフォルダ、フロントで使用されているプラグインのcssファイル(プラグインの公式サイトアドレスを直接使用しているものもあり、ロードが遅すぎる場合はローカルプロジェクトにダウンロードできます).
  • コピー==publicjs==の下のすべてのファイルとフォルダ、フロントで使用されているプラグインのjsファイル(プラグインの公式サイトアドレスを直接使用しているものもあり、ロードが遅すぎる場合はローカルプロジェクトにダウンロードできます)、および関連モジュールのjsファイルをコピーします.
  • =resourcesviewsrbac=フォルダをコピーします.関連モジュールのviewテンプレートファイルが含まれています.
  • =resourcesviewserrors==フォルダをコピーします.関連モジュールに権限がない場合にジャンプするviewテンプレートファイルが含まれています.
  • =resourcesviewslayouts==フォルダをコピーします.関連モジュールの汎用モジュールのviewテンプレートファイルが含まれています.