RBAC権限PHP Laravel5実施管理操作の例

権限に応じて、メニューバーを表示さまざまな機能で、唯一のメニューは限られていた、とルートも限られていた場合は、メニューの一例によると、完璧な自己開発しました。RBAC設計laravelについて学ぶために、慎重に、次の

図1に示すように、テーブルの構築(表ユーザ、役割テーブル、テーブルの権限、ユーザロールテーブル、役割権限テーブル)

1 CREATE TABLE IF NOTはmr_role EXISTS
 2  3のID INT(11)PRIMARY KEY AUTO_INCREMENTコメント'自增ID'、
 4名のVARCHAR(30)NOT NULL COMMENT '角色名'
 5)ENGINE = InnoDBのDEFAULT CHARSET = UTF8コメント=」角色表」;
6  
7  
8 TABLE CREATE IF NOTがmr_privilege EXISTS
 9  10のID INT(11)PRIMARY KEY AUTO_INCREMENTコメント'自增ID'、
 11名のVARCHAR(30)NOT NULL COMMENT '权限名'、
 12ルートVARCHAR(50)NOTをNULL COMMENT 'のすべてのルートの権限'、
 13は説明VARCHAR(100)NOT NULL COMMENT '権利記述'
 14)ENGINE = InnoDBのDEFAULT CHARSET = UTF8 COMMENT = 'パーミッション・テーブル' ;
 15  
16  
。17 TABLE CREATE IF NOT mr_user_role EXISTS
 18です 19 ID INT(11)PRIMARY KEY AUTO_INCREMENT COMMENT '自己増力ID'、
 20である USER_ID INT(11)NOT NULL COMMENT 'ユーザID'、
 21は ROLE_ID INT(11)NOT NULL COMMENT '役割ID'
 22れる)ENGINE = InnoDBのDEFAULT CHARSET = UTF8のCOMMENT = 'ユーザーロールテーブル' ;
23は、 
24  
25のCREATE TABLE IF NOT mr_role_privilege EXISTS
 26である 27(11)PRIMARY ID INTをKEY AUTO_INCREMENT COMMENT '自己増力ID'、
 28 ROLE_ID INT(11)NOT NULL COMMENT '役割ID'、
 29 privilege_id INT(11)NOT NULL COMMENT '許可ID'
 30)ENGINE = InnoDBのDEFAULT CHARSET = UTF8 COMMENT = '役割許可テーブル';

 

多くのユーザーモデルとロールモデルを達成するために2、

1  クラスのユーザに延びモデル
 2  {
 3    保護 $主キー =「ID」4    保護された $表 = 'ユーザ5つの   公共 $タイムスタンプ = ;
6    公共 守ら$ = ; []
7つの   パブリック 関数の役割()
 8    {
 9      リターンは これを$ - > belongsToMany( 'アプリケーション\モデル\役割'、 'USER_ROLE'、 'user_idの'、 'ROLE_ID') - > withPivot( 'user_idを'、 'ROLE_ID' );
  12  
13   
14  
15  クラスの役割延びモデル
 16  {
 17    保護 $テーブル = '役割' ;
18    保護 $ PRIMARYKEY = 'ID' 19の   公共 $タイムスタンプ = ;
20    公共 守ら$ = ; []
21の   パブリック 関数の特権()
 22    {
 23      リターンは これを$ - > belongsToMany( 'アプリケーション\モデル\特権'、 'role_privilege'、 'ROLE_ID'、 'privilege_id') - > withPivot([ 'ROLE_ID'、 ']);
24    }

 

}

 

3、メニューはアプリ\プロバイダ\ AppServiceProvider.php中に書き込み、公共エリアとみなされます

1つの パブリック 関数ブート()
 2  {
 3      \ビュー::作曲( 'layout.slide'、関数$ビュー){
 4        $ roles_id =ユーザー::検索(セッション( 'ユーザー')[ 'ID']) - > roles->マップ(関数$役割){
 5          リターン $ロール - > ID;
 6        });   // 使用マップ、最终得到的结果$ roles_id = [1、2、...] 
7つの       $権限 = [] ;
 8        foreachの$ roles_id  として $役割){
 9つの         $権限 =array_merge$権限、役割::検索($役割) - > privileges->地図(関数$特権){
 10            リターン [ $特権 - >名前、$特権 - > ルート];
 11          }) - > のtoArray() );
 12        }   // 得られた結果は、$ prpvileges = [ 'インデックス / ..'、 ' リスト']、[ ''、 '']] 
13である       $ビュー - >( '特権'と$権限)。
 14      });
 15 }

 

 

4、メニューを達成するために(あなたはdiv要素を歩くことができる、私は判断して、その後、さまざまなスタイルがありますので、ここにいますよ)

1 @ foreachの$特権 として $特権2        @ もし$特典 [1] == 'キー/インデックス' && $特典 [0] == '键名列表' 3          の<div クラス = "slide__left__key"スタイル= "マージントップ:10pxの;"> <a href="{{ url('key/index') }}" rel="external nofollow"> <スパンクラス = "glyphicon glyphicon番目の"> </ span>の键名列表する</a> </ div>の
 4        @ endifの
5        @ もし$特典 [1] == 'キーを作成/' &&特権$ [0] == 'キー名を追加' 6           <divのクラス = "slide__left__key"> <a href="{{ url('key/create') }}" rel="external nofollow"> <スパンクラス = "glyphicon glyphiconプラス"> </ span>の添加键名</a>の</ div>の
 7        @ endifの
8        @ もし$特典 [1] == 'プロジェクト/インデックス' && $特典 [0] == '项目列表' 9            <divのクラス = "slide__left__key"スタイル= "マージントップ:20ピクセル;"> <a href="{{ url('project/index') }}" rel="external nofollow"> <スパンクラス =」
glyphicon glyphicon番目のリスト「> </ span>のアイテムのリスト</a>の</ div>の10        @ endifの
11        @ IF$特権は [1] == 'プロジェクトが作成/' && $特典 [0] == '添加项目' 12            <divのクラス = "slide__left__key"> <A HREF = "{{URL( 'プロジェクト作成/') }}」のrel = "nofollowを外部"> <スパンクラス = "glyphicon glyphicon編集"> </ span>の添加项目</a>の</ div>の
 13        @ endifの
14        @ もし$特典 [1] == 'ユーザー/インデックス」&& $特典 [0] == '用户列表' 15            <divのクラス = "slide__left__key"スタイル= "マージントップ:20ピクセル;「> <a href="{{ url('user/index') }}" rel="external nofollow"> <スパンクラス= "glyphicon glyphicon番目の大型"> </ span>の用户列表</a>の</ div>の
 16        @ endifの
17        @ もし$特典 [1] == 'ユーザーが作成/' && $特典 [0] = = '添加用户' 18            <divのクラス = "slide__left__key"> <a href="{{ url('user/create') }}" rel="external nofollow"> <スパンクラス = "glyphicon glyphicon-plus-記号"> </ span>の添加用户</a>の</ div>の
 19        @ endifの
20 @ endforeach

 

 

おすすめ

転載: www.cnblogs.com/a609251438/p/11885784.html
おすすめ