- 新建用户,角色,权限,用户角色关系,角色权限关系的五张Mysql数据表
- 新建用户,角色,权限Model
用户控制器:
//因为是多对多关系,所以跟Role的关联模型
public function role(){
return $this->belongsToMany('App\Model\Role','user_role','')
//related关联的Role模型,user_role表,
}
- 新建角色和权限的资源控制器
- 创建资源路由
- 创建视图模块
中间件
新建中心件
- 获取当前请求的路由,对应的控制器方法名
$route=\Route::current()->getActionName();
- 获取当前用户权限组
$user=User::find(session()->get('user')->user_id);
2.1获取当前用户的角色
$roles=$user->role;//是数组
2.2根据用户拥有的角色找对应的权限
存放权限对应的per_url字段值,也就是权限列表
//需要先进行遍历
$arr=[];
foreach ($roles as $v){
$perms=$v->permission;
foreach ($perms as $perm){
$arr[]=$perm->per_url;
}
}
2.3去掉重复的权限
$arr=$array_unique($arr);
- 判断当前请求的路由对应控制器的方法名是否在当前用户拥有的权限列表也就是说$arr中
if(in_array($route,$arr)){
return $next($request); //放行
}else{
return redirect('noacess');
}