第一步:在管理员表建立 group_id (群组id)字段,用于给管理员指定权限管理群组id,看图
第二步:建立管理员群组表 admin_group ,用于给不同群组分配权限,看图
第三步:给不同的权限组分配不同的权限,还是看图
第四步:在后台访问的中间件文件插入以下代码($memberInfo 变量是当前登录管理员的用户信息)
/*
* 权限管理
*/
$controller = Request::controller(); //获取控制器名
//$action = Request::action(); //获取方法名,如果是要控制到方法的访问则使用方法名来判断
// 查出我的角色
$myGroup = Db::table('admin_group')->where('id',$memberInfo['group_id'])->find();
if(!$myGroup){
throw new HttpResponseException(json(['code' => '3001', 'info' => '该角色不存在,请联系管理员!', 'data' => '',]));
}
//获取当前的rights集合
$myGroup['rights'] = json_decode($myGroup['rights'],true);
//当前访问的菜单是否在rights数组里
if(!in_array($controller, $myGroup['rights'])){
throw new HttpResponseException(json(['code' => '3001', 'info' => '没有权限,请联系管理员!', 'data' => '',]));
}
需要注意的地方:
$controller = Request::controller(); //获取控制器名
这个代码获取到的控制器名称里面含有大写,如:admin.Member