CheckLogin.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. <?php
  2. namespace App\Http\Middleware;
  3. use App\Model\SysMenu;
  4. use App\Service\LoginService;
  5. use Closure;
  6. use App\Service\TokenService;
  7. class CheckLogin
  8. {
  9. public function handle($request, Closure $next)
  10. {
  11. $token = $request->header('Authorization');
  12. if (empty($token)) return response()->json(['code' => 1,'msg' => '缺少登录凭证','data' => null]);
  13. $tree_type = $request->header('TreeType');
  14. if (! isset(SysMenu::tree[$tree_type])) return response()->json(['code' => 1,'msg' => '缺少参数或参数错误','data' => null]);
  15. $title = SysMenu::tree[$tree_type];
  16. //校验token
  17. list($bool, $return) = TokenService::verifyToken($token);
  18. if(! $bool) return response()->json(['code' => 1,'msg' => $return,'data' => null]);
  19. //人员在jwt里的信息
  20. $e_array = $return;
  21. //校验是否越权拿菜单数据
  22. $bool = LoginService::hasPersonRoleForSysMenuList($e_array['employee_id'], $tree_type);
  23. if(! $bool) return response()->json(['code' => 1,'msg' => '无系统' . $title . '权限','data' => null]);
  24. //校验人员
  25. $checkResult = LoginService::checkUser($e_array);
  26. list($state, $msg) = $checkResult;
  27. if(! $state) return response()->json(['code' => 1,'msg' => $msg,'data' => null]);
  28. $employee = $msg;
  29. //人员id
  30. $employee_id = $employee['id'];
  31. //人员公司部门
  32. $employee = array_merge($employee, LoginService::getPersonDepart($employee_id));
  33. list($state, $msg) = LoginService::checkCompany($employee);
  34. if(! $state) return response()->json(['code' => 1,'msg' => $msg,'data' => null]);
  35. //人员角色 菜单权限
  36. $employee = array_merge($employee, LoginService::getPersonRoleAndPermissions($employee, $tree_type));
  37. //当前选择的系统菜单
  38. $employee['select_tree_type'] = $tree_type;
  39. $request->userData = $employee;
  40. return $next($request);
  41. }
  42. }