博客列表 >菜单系统__随不同权限管理员登陆而不同

菜单系统__随不同权限管理员登陆而不同

海阔天空
海阔天空原创
2020年06月17日 11:03:57832浏览

菜单系统__随不同权限管理员登陆而不同

管理员权限可能各不相同,菜单系统应只显示其有权限的菜单。

  • 1、通过权限中间件获得权限数据

    1. //权限校验中间件
    2. class Rightvalidate
    3. {
    4. public function handle($request, Closure $next)
    5. {
    6. //取出用户信息
    7. $admin=Auth::user();
    8. $gid=$admin->gid;//获取当前用户的角色gid;
    9. $group=DB::table('admin_group')->where('gid',$gid)->item();
    10. if(!$group){
    11. return response('不存在该角色',200);
    12. }
    13. $rights=[];
    14. if ($group['rights']){
    15. //获取用户权限数组
    16. $rights=json_decode($group['rights'],true);
    17. }
    18. //当前用户访问的是哪个菜单
    19. $namespace=$request->route()->action['namespace'];
    20. $res=$request->route()->action['controller'];
    21. //获得控制器和方法
    22. $res=str_replace($namespace.'\\','',$res);
    23. //获得表示控制器和方法的数组
    24. $res=explode('@',$res);
    25. //查询当前url对应的菜单
    26. $cur_menu=DB::table('admin_menu')->where('controller',$res[0])->where('action',$res[1])->item();
    27. if(!$cur_menu){
    28. return response('该功能不存在',200);
    29. }
    30. //判断该mid是否在$rights数组中
    31. if(!in_array($cur_menu['mid'],$rights)){
    32. //使用助手函数response()响应,第一个参数为信息,第二个参数为状态码;
    33. return response('权限不足',200);
    34. }
    35. $admin->rights=$rights;
    36. $admin->right_title=$group['title'];
    37. $request->admin=$admin;
    38. return $next($request);
    39. }
    40. }
  • 2、筛选登陆管理员有权限的菜单数据
    1. // 框架主页
    2. class Home extends Controller
    3. {
    4. public function index(Request $res){
    5. $data['admin']=$res->admin;
    6. $data['menus']=DB::table('admin_menu')->where('pid',0)->whereIn('mid',$data['admin']['rights'])->where('ishidden',0)->where('status',0)->get()->all();
    7. foreach ($data['menus'] as $key=>$val){
    8. $childs=DB::table('admin_menu')->whereIn('mid',$data['admin']['rights'])->where('pid',$val->mid)->where('ishidden',0)->where('status',0)->get()->all();
    9. $val->child=$childs;
    10. }
    11. return view('admins/home/index',$data);
    12. }
    13. }
    效果图


总结:
1、充分利用Auth::user()提供的数据。
2、已经在权限中间件中编码获得权限数据,要充分利用。
3、对多维数组加强学习。在循环中使用率很高,对键名、值的读取、添加要熟练掌握。

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议