Login.php 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. namespace App\Http\Middleware\Manager;
  3. use App\Facades\Servers\Encrypts\AccessToken;
  4. use Closure;
  5. use Illuminate\Http\Request;
  6. class Login
  7. {
  8. // 无需验证的路径
  9. protected $except = [
  10. 'manager/process/sub_notice',
  11. 'manager/login/index',
  12. 'manager/login/mobile',
  13. 'manager/login/email',
  14. 'manager/login/send_code',
  15. 'manager/login/mobile_code',
  16. 'manager/citys/list',
  17. 'manager/login/wechat',
  18. 'manager/citys/list_zoning',
  19. 'manager/statistics/product_surveillance/push_data_notice',
  20. 'manager/process/low_price_goods/data_cleaning'
  21. ];
  22. //默认配置
  23. protected $_config = [
  24. 'auth_on' => true, // 认证开关
  25. 'auth_type' => 1, // 认证方式,1为实时认证;2为登录认证。
  26. 'auth_group' => 'auth_group', // 用户组数据表名
  27. 'auth_group_access' => 'auth_group_access', // 用户-用户组关系表
  28. 'auth_rule' => 'auth_rule' // 权限规则表
  29. ];
  30. /**
  31. * $prefix表前缀
  32. */
  33. public function __construct()
  34. {
  35. // 判断配置
  36. if (config('AUTH_CONFIG')) {
  37. //可设置配置项 AUTH_CONFIG, 此配置项为数组。
  38. $this->_config = array_merge($this->_config, config('AUTH_CONFIG'));
  39. }
  40. }
  41. /**
  42. * Handle an incoming request.
  43. *
  44. * @param \Illuminate\Http\Request $request
  45. * @param \Closure $next
  46. * @return mixed
  47. */
  48. public function handle(Request $request, Closure $next)
  49. {
  50. // 当前路径
  51. $path = ltrim($request->getPathInfo(), '/');
  52. // 判断是否需要验证登录
  53. if (!in_array($path, $this->except)) {
  54. // 获取登录结果
  55. $token = (string) $request->input('access_token_manager', '');
  56. // 解码
  57. $userInfo = AccessToken::decode($token);
  58. // 判断登录时效
  59. if (isset($userInfo['error'])) return json_send(['code' => 'no_login', 'msg' => '请您登录', 'data' => $userInfo['error']]);
  60. if ($userInfo['type'] != 'manager' || $userInfo['expire'] < time()) return json_send(['code' => 'no_login', 'msg' => '请您登录', 'data' => '登录失效']);
  61. // 获取用户信息
  62. if($userInfo['is_admin'] == 0){
  63. $EmployeeModel = new \App\Models\Manager\Personnel\Employee();
  64. $Employee = $EmployeeModel->where('id', $userInfo['uid'])->first();
  65. if (!$Employee) return json_send(['code' => 'no_login', 'msg' => '记录不存在','data'=>'']);
  66. if ($Employee->status == 1) return json_send(['code' => 'no_login', 'msg' => '账号已被禁用','data'=>'']);
  67. }
  68. // 是否是超管
  69. $userInfo['is_super'] = is_super($userInfo['uid'],$userInfo['is_admin'], 'manager') ? 1 : 0;
  70. // 追加入
  71. $request['access_token'] = $userInfo;
  72. }
  73. // 返回下一个闭包
  74. return $next($request);
  75. }
  76. }