在用户表中添加角色id,根据角色id获取用户角色,如果时一个角色则不用创建中间表,否则需要创建中间表。
根据角色id获取到用户所拥有的角色,根据角色和权限的中国表获取到角色所拥有的权限id,根据权限id获取到用户的权限范围,
$node_id = role_node::where('role_id', $role['id'])->get()->toArray();
$res = [];
foreach ($node_id as $v) {
$res[] = node::where('id', $v['node_id'])->first()->toArray();
}
这里获取的$res就是查询到的用户权限,存入session中,再中间件中读取用户目前所拥有的权限,
这是获取的用户权限
在展示主页中读取用户的权限,使用递归或者三级联动,读取的是之前获取后放在session的权限
$res = Cache::get('auths');
$rbac = rbac::data($res);
return view('index', ['list' => $rbac]);
递归:
public static function data($data,$pid=0)
{
$res=[];
foreach ($data as $v){
if ($v['pid']==$pid){
$res[$v['id']]=$v;
$res[$v['id']]['son']=self::data($data,$v['id']);
}
}
return $res;
}
然后把获取到的权限展示在首页上。



