getArg(0, true); try { $token = trim($request->header('Shop-Token')); if (strpos($token, 'Bearer') === 0) $token = trim(substr($token, 6)); if (!$token) throw new ValidateException('请登录'); /** * @var MerchantAdminRepository $repository */ $repository = app()->make(MerchantAdminRepository::class); $service = new JwtTokenService(); try { $payload = $service->parseToken($token); } catch (ExpiredException $e) { $repository->checkToken($token); $payload = $service->decode($token); } catch (Throwable $e) {//Token 过期 throw new ValidateException('token 已过期'); } if ('mer' != $payload->jti[1]) throw new ValidateException('无效的 token'); $admin = $repository->get($payload->jti[0]); if (!$admin) throw new ValidateException('账号不存在'); if (!$admin['status']) throw new ValidateException('账号已被禁用'); /** * @var MerchantRepository $merchantRepository */ $merchantRepository = app()->make(MerchantRepository::class); $merchant = $merchantRepository->get($admin->mer_id); if (!$merchant || !$merchant['status']) throw new ValidateException('商户已被锁定'); } catch (Throwable $e) { if ($force) throw $e; $request->macro('shopIsLogin', function () { return false; }); $request->macros(['merchantType', 'shopMerId'], function () { throw new ValidateException('请登录'); }); return; } $repository->updateToken($token); $request->macro('shopIsLogin', function () { return true; }); $request->macro('merchantType', function () use (&$merchant) { return $merchant->merchant_type; }); $request->macro('merchantId', function () use (&$admin) { return $admin->mer_id; }); } public function after(Response $response){ // TODO: Implement after() method. } }