Blogger Information
Blog 19
fans 1
comment 0
visits 15271
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
菜单系统__随不同权限管理员登陆而不同
海阔天空
Original
831 people have browsed it

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

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

  • 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、对多维数组加强学习。在循环中使用率很高,对键名、值的读取、添加要熟练掌握。

Correcting teacher:WJWJ

Correction status:qualified

Teacher's comments:写的非常好!
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post