1、建表(顾客表、角色表、权限表、客商角色表、剧中人物权限表卡塔 尔(英语:State of Qatar)

本文实例呈报了Laravel框架完毕的rbac权限管理操作。分享给我们供大家参谋,具体如下:

介绍:根据分歧的权力,在菜单栏展现不一样的出力,只对菜单实行了限制,若对路由也进展界定,请自行完善

1、建表(客商表、剧中人物表、权限表、客商剧中人物表、角色权限表卡塔尔

CREATE TABLE IF NOT EXISTS mr_role PRIMARY KEY AUTO_INCREMENT COMMENT '自增id',name varchar NOT NULL COMMENT '角色名')ENGINE=innodb DEFAULT CHARSET=utf8 COMMENT='角色表';CREATE TABLE IF NOT EXISTS mr_privilege PRIMARY KEY AUTO_INCREMENT COMMENT '自增id',name varchar NOT NULL COMMENT '权限名',route varchar NOT NULL COMMENT '权限所有的路由',description varchar NOT NULL COMMENT '权限的描述')ENGINE=innodb DEFAULT CHARSET=utf8 COMMENT='权限表';CREATE TABLE IF NOT EXISTS mr_user_role PRIMARY KEY AUTO_INCREMENT COMMENT '自增id',user_id int NOT NULL COMMENT '用户id',role_id int NOT NULL COMMENT '角色id')ENGINE=innodb DEFAULT CHARSET=utf8 COMMENT='用户角色表';CREATE TABLE IF NOT EXISTS mr_role_privilege PRIMARY KEY AUTO_INCREMENT COMMENT '自增id',role_id int NOT NULL COMMENT '角色id',privilege_id int NOT NULL COMMENT '权限id')ENGINE=innodb DEFAULT CHARSET=utf8 COMMENT='角色权限表';

2、在顾客模型和剧中人物模型中完结多对多

class User extends Model{ protected $primaryKey = 'id'; protected $table = 'user'; public $timestamps = false; public $guarded = []; public function roles() { return $this->belongsToMany('AppModelRole', 'user_role', 'user_id', 'role_id')->withPivot; }}class Role extends Model{ protected $table = 'role'; protected $primaryKey = 'id'; public $timestamps = false; public $guarded = []; public function privileges() { return $this->belongsToMany('AppModelPrivilege', 'role_privilege', 'role_id', 'privilege_id')->withPivot(['role_id', 'privilege_id']); }}

3、将菜单视为公共区域,在appProvidersAppServiceProvider.php里写

public function boot(){ View::composer('layout.slide', function { $roles_id = User::find['id'])->roles->map { return $role->id; }); // 使用map,最终得到的结果$roles_id = [1, 2, ...] $privileges = []; foreach  { $privileges = array_merge($privileges, Role::find->privileges->map { return [$privilege->name, $privilege->route]; })->toArray; } // 得到的结果,$prpvileges = [['index/..', '列表'], ['', '']] $view->with('privileges', $privileges); });}

4、菜单的达成(能够直接遍历三个div,笔者那边因为有例外的体制,便用了判定卡塔尔

@foreach ($privileges as $privilege) @if ($privilege[1] == 'key/index' && $privilege[0] == '键名列表')  键名列表 @endif @if ($privilege[1] == 'key/create' && $privilege[0] == '添加键名')  添加键名 @endif @if ($privilege[1] == 'project/index' && $privilege[0] == '项目列表')  项目列表 @endif @if ($privilege[1] == 'project/create' && $privilege[0] == '添加项目')  添加项目 @endif @if ($privilege[1] == 'user/index' && $privilege[0] == '用户列表')  用户列表 @endif @if ($privilege[1] == 'user/create' && $privilege[0] == '添加用户')  添加用户 @endif @endforeach

越来越多关于Laravel相关内容感兴趣的读者可查阅本站专项论题:《Laravel框架入门与进级教程》、《php优良开辟框架总计》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php不足为道数据库操作技能汇总》

梦想本文所述对我们基于Laravel框架的PHP程序设计具有利于。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website