diff --git a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/usermanagement/OrganizationController.java b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/usermanagement/OrganizationController.java index 6a8bb62ea..00cc33779 100644 --- a/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/usermanagement/OrganizationController.java +++ b/server/api-service/lowcoder-server/src/main/java/org/lowcoder/api/usermanagement/OrganizationController.java @@ -62,11 +62,23 @@ public Mono> getOrganizationByUser(@PathVariable String emai @RequestParam(required = false, defaultValue = "0") Integer pageSize) { Flux flux; if (commonConfig.getWorkspace().getMode() == WorkspaceMode.SAAS) { - flux = userService.findByEmailDeep(email).flux().flatMap(user -> orgMemberService.getAllActiveOrgs(user.getId())) + flux = userService.findByEmailDeep(email).flux() + .flatMap(user -> orgMemberService.getAllActiveOrgs(user.getId())) .flatMap(orgMember -> organizationService.getById(orgMember.getOrgId())) - .map(OrgView::new).cache(); + .map(OrgView::new) + .cache(); } else { - flux = organizationService.getOrganizationInEnterpriseMode().flux().map(OrgView::new).cache(); + // Not SAAS: check if user exists and is a member of the org + flux = userService.findByEmailDeep(email) + .flatMapMany(user -> + organizationService.getOrganizationInEnterpriseMode().flux() + .flatMap(org -> + orgMemberService.getOrgMember(org.getId(), user.getId()) + .filter(orgMember -> !orgMember.isInvalid()) + .map(__ -> new OrgView(org)) + ) + ) + .cache(); } var newflux = flux.sort((OrgView o1, OrgView o2) -> { if (o1.getOrgName() == null || o2.getOrgName() == null) {