header('Authorization')); $session = $jwtService->validateToken($token); $result = AdminRealtimeTicket::issue((int) request()->user->id, isset($session->exp) ? (int) $session->exp : null); } catch (Exception $e) { return $this->error(HttpStatus::CUSTOM_ERROR, $e->getMessage()); } return $this->success($result); } /** 推送网关内部拉取事件,仅凭 X-Realtime-Secret 访问 */ public function events(): JsonResponse { $secret = (string) config('admin_realtime.internal_secret'); if ($secret === '' || !hash_equals($secret, (string) request()->header('X-Realtime-Secret'))) { return response()->json(['code' => HttpStatus::CUSTOM_ERROR, 'timestamp' => time(), 'msg' => 'forbidden', 'data' => []], 403); } if (!config('admin_realtime.enabled')) { return $this->error(HttpStatus::CUSTOM_ERROR, '实时推送未启用'); } try { $gaps = array_filter(explode(',', (string) request()->input('gaps', '')), 'ctype_digit'); $result = AdminRealtimeFeed::pull((int) request()->input('after', -1), $gaps); } catch (\Throwable $e) { return $this->error(HttpStatus::CUSTOM_ERROR, $e->getMessage()); } return $this->success($result); } }