diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/npm/PrivateNpmRegistryController.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/npm/PrivateNpmRegistryController.java index 2f3614b84..9e967605c 100644 --- a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/npm/PrivateNpmRegistryController.java +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/npm/PrivateNpmRegistryController.java @@ -4,6 +4,8 @@ import org.jetbrains.annotations.NotNull; import org.lowcoder.api.home.SessionUserService; import org.lowcoder.domain.application.service.ApplicationServiceImpl; +import org.lowcoder.domain.organization.model.OrgMember; +import org.lowcoder.domain.organization.model.Organization; import org.lowcoder.domain.organization.service.OrgMemberServiceImpl; import org.lowcoder.domain.organization.service.OrganizationService; import org.lowcoder.infra.constant.NewUrl; @@ -49,23 +51,39 @@ private Mono> forwardToNodeService(String applicationId String withoutLeadingSlash = path.startsWith("/") ? path.substring(1) : path; if(applicationId.equals("none")) { - return sessionUserService.getVisitorOrgMemberCache().flatMap(orgMember -> organizationService.getOrgCommonSettings(orgMember.getOrgId()).flatMap(organizationCommonSettings -> { - Map config = Map.of("npmRegistries", Objects.requireNonNullElse(organizationCommonSettings.get("npmRegistries"), new ArrayList<>(0)), "workspaceId", orgMember.getOrgId()); - return WebClientBuildHelper.builder() - .systemProxy() - .build() - .post() - .uri(nodeServerHelper.createUri(prefix + "/" + withoutLeadingSlash)) - .contentType(MediaType.APPLICATION_JSON) - .body(BodyInserters.fromValue(config)) - .retrieve().toEntity(Resource.class) - .map(response -> { - return ResponseEntity - .status(response.getStatusCode()) - .headers(response.getHeaders()) - .body(response.getBody()); - }); - })); + return sessionUserService.getVisitorOrgMemberCache() + .onErrorResume(e -> Mono.just(OrgMember.builder().orgId("default").build())) + .flatMap(orgMember -> organizationService.getOrgCommonSettings(orgMember.getOrgId()) + .onErrorResume(e -> { + // Handle errors fetching organization settings and provide defaults + Organization.OrganizationCommonSettings defaultSettings = new Organization.OrganizationCommonSettings(); + defaultSettings.put("npmRegistries", new ArrayList<>(0)); + return Mono.just(defaultSettings); + }) + .flatMap(organizationCommonSettings -> { + Map config = Map.of( + "npmRegistries", Objects.requireNonNullElse( + organizationCommonSettings.get("npmRegistries"), + new ArrayList<>(0) + ), + "workspaceId", orgMember.getOrgId() + ); + return WebClientBuildHelper.builder() + .systemProxy() + .build() + .post() + .uri(nodeServerHelper.createUri(prefix + "/" + withoutLeadingSlash)) + .contentType(MediaType.APPLICATION_JSON) + .body(BodyInserters.fromValue(config)) + .retrieve() + .toEntity(Resource.class) + .map(response -> ResponseEntity + .status(response.getStatusCode()) + .headers(response.getHeaders()) + .body(response.getBody()) + ); + })); + } else{ return applicationServiceImpl.findById(applicationId).flatMap(application -> organizationService.getById(application.getOrganizationId())).flatMap(orgMember -> organizationService.getOrgCommonSettings(orgMember.getId()).flatMap(organizationCommonSettings -> { Map config = Map.of("npmRegistries", Objects.requireNonNullElse(organizationCommonSettings.get("npmRegistries"), new ArrayList<>(0)), "workspaceId", orgMember.getId());