CheckLogin.php 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <?php
  2. namespace App\Http\Middleware;
  3. use App\Service\EmployeeService;
  4. use Closure;
  5. use App\Service\TokenService;
  6. /**
  7. * 用户登陆中间件
  8. */
  9. class CheckLogin
  10. {
  11. /**
  12. * Handle an incoming request.
  13. *
  14. * @param \Illuminate\Http\Request $request
  15. * @param \Closure $next
  16. * @return mixed
  17. */
  18. public function handle($request, Closure $next)
  19. {
  20. $token=$request->header('Authorization');
  21. if (empty($token)) return response()->json(['code'=>1,'msg'=>'缺少登录凭证','data'=>null]);
  22. //校验token
  23. $result = TokenService::verifyToken($token);
  24. if ($result < -1) return response()->json(['code'=>1,'msg'=>TokenService::error[$result],'data'=>null]);
  25. //校验用户
  26. $checkResult = EmployeeService::checkUser($result);
  27. list($state, $data) = $checkResult;
  28. if(! $state) return response()->json(['code'=>1,'msg'=>$data,'data'=>null]);
  29. //人员角色
  30. $data['role'] = EmployeeService::getPersonRole($result);
  31. //角色里所有菜单权限
  32. $data['role_authority'] = EmployeeService::getPersonRoleQx($data['role']);
  33. //角色里特殊的按钮
  34. $data['special_button'] = EmployeeService::getSpecialButton($data['role'],$result);
  35. //拥有的部门
  36. $data['depart_range'] = EmployeeService::getLoginDepart($result);
  37. //填充菜单 要权限的地方 列表页字段合计之类
  38. $menu_id = EmployeeService::fillMenu($request,'api/');
  39. $header_default = [];
  40. if($menu_id){
  41. $request->merge(['menu_id' => $menu_id]);
  42. $header_default = config("header." . $menu_id) ?? [];
  43. }
  44. $data['header_default'] = $header_default;
  45. //写入user信息
  46. $request->userData = $data;
  47. return $next($request);
  48. }
  49. }