header('Authorization', ''); $payload = JwtService::verifyToken($token); if (!$payload || empty($payload['user_id'])) { $this->abort('请先登录', 401); } $user = User::with(['membership'])->find($payload['user_id']); if (!$user || $user->status !== 'active') { $this->abort('请先登录', 401); } $request->authUser = $this->formatUser($user); return $next($request); } private function formatUser(User $user): array { $level = $user->membership; return [ 'id' => $user->id, 'username' => $user->username, 'email' => $user->email, 'nickname' => $user->nickname, 'avatar' => $user->avatar, 'role' => $user->role, 'status' => $user->status, 'membership_level_id' => $user->membership_level_id, 'membership_name' => $level?->name, 'membership_slug' => $level?->slug, 'max_conversations' => $level?->max_conversations ?? 20, 'max_messages_per_day' => $level?->max_messages_per_day ?? 50, 'max_upload_size_mb' => $level?->max_upload_size_mb ?? 5, 'membership_permissions' => $level?->permissions ?? [], ]; } private function abort(string $message, int $httpCode = 400): void { throw new HttpResponseException(json([ 'code' => 1, 'message' => $message, 'data' => null, ], $httpCode)); } }