Skip to content

Commit

Permalink
Maintain existing behavior when org visibility is not enabled
Browse files Browse the repository at this point in the history
  • Loading branch information
RusJaI committed Dec 12, 2024
1 parent f6aae23 commit 134262e
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -110,9 +110,14 @@ public Response apisGet(Integer limit, Integer offset, String xWSO2Tenant, Strin

//Map allMatchedApisMap = apiConsumer.searchPaginatedAPIs(query, superOrganization, offset,
// limit, null, null);
Map allMatchedApisMap = apiConsumer.searchPaginatedAPIs(query, orgInfo, offset,
limit, null, null);

Map allMatchedApisMap;
if (APIUtil.isOrganizationAccessControlEnabled()) {
allMatchedApisMap = apiConsumer.searchPaginatedAPIs(query, orgInfo, offset,
limit, null, null);
} else {
allMatchedApisMap = apiConsumer.searchPaginatedAPIs(query, superOrganization, offset,
limit, null, null);
}

Set<Object> sortedSet = (Set<Object>) allMatchedApisMap.get("apis"); // This is a SortedSet
ArrayList<Object> allMatchedApis = new ArrayList<>(sortedSet);
Expand Down Expand Up @@ -1179,10 +1184,8 @@ private APIDTO getAPIByAPIId(String apiId, String organization, OrganizationInfo
String userOrg = userOrgInfo.getOrganizationSelector();

String userName = RestApiCommonUtil.getLoggedInUsername();
String[] roles = APIUtil.getListOfRoles(APIUtil.getUserNameWithTenantSuffix(userName));

if (!api.isAPIProduct() && !(Arrays.asList(roles).contains("admin")) &&
!RestApiUtil.isOrganizationVisibilityAllowed(visibleOrgs, userOrg)) {
if (!api.isAPIProduct() && !RestApiUtil.isOrganizationVisibilityAllowed(userName,visibleOrgs, userOrg)) {
RestApiUtil.handleAuthorizationFailure(RestApiConstants.RESOURCE_API, apiId, log);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import org.wso2.carbon.apimgt.api.model.Documentation;
import org.wso2.carbon.apimgt.api.model.OrganizationInfo;
import org.wso2.carbon.apimgt.impl.APIConstants;
import org.wso2.carbon.apimgt.impl.utils.APIUtil;
import org.wso2.carbon.apimgt.rest.api.common.RestApiCommonUtil;
import org.wso2.carbon.apimgt.rest.api.store.v1.SearchApiService;
import org.wso2.carbon.apimgt.rest.api.store.v1.dto.SearchResultDTO;
Expand Down Expand Up @@ -71,10 +72,20 @@ public Response searchGet(Integer limit, Integer offset, String xWSO2Tenant, Str
Map<String, Object> result = null;
// Extracting search queries for the recommendation system
apiConsumer.publishSearchQuery(query, username, superOrganization);
boolean isOrganizationSupportEnabled = APIUtil.isOrganizationAccessControlEnabled();
if (query.startsWith(APIConstants.CONTENT_SEARCH_TYPE_PREFIX)) {
result = apiConsumer.searchPaginatedContent(query, orgInfo, offset, limit);
if (isOrganizationSupportEnabled) {
result = apiConsumer.searchPaginatedContent(query, orgInfo, offset, limit);
} else {
result = apiConsumer.searchPaginatedContent(query, superOrganization, offset, limit);
}
} else {
result = apiConsumer.searchPaginatedAPIs(query, orgInfo, offset, limit, null, null);
if (isOrganizationSupportEnabled) {
result = apiConsumer.searchPaginatedAPIs(query, orgInfo, offset, limit, null, null);
} else {
result = apiConsumer.searchPaginatedAPIs(query, superOrganization, offset, limit, null,
null);
}
}

ArrayList<Object> apis;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1294,20 +1294,28 @@ public static String resolveOrganization (HashMap<String,Object> message) throws
return organization;
}

public static boolean isOrganizationVisibilityAllowed(String visibleOrgs, String userOrg) {
public static boolean isOrganizationVisibilityAllowed(String userName, String visibleOrgs, String userOrg)
throws APIManagementException {
boolean allowed = false;

if (StringUtils.isEmpty(visibleOrgs) || APIConstants.DEFAULT_VISIBLE_ORG.equals(visibleOrgs)) {
allowed = true;
} else {
List<String> visibleOrgList = Arrays.asList(visibleOrgs.split(","));

if(visibleOrgList.contains(userOrg)) {
if (APIUtil.isOrganizationAccessControlEnabled()) {
String[] roles = APIUtil.getListOfRoles(APIUtil.getUserNameWithTenantSuffix(userName));
if (Arrays.asList(roles).contains("admin")) {
return true;
}
if (StringUtils.isEmpty(visibleOrgs) || APIConstants.DEFAULT_VISIBLE_ORG.equals(visibleOrgs)) {
allowed = true;
} else {
allowed = false;
List<String> visibleOrgList = Arrays.asList(visibleOrgs.split(","));

if (visibleOrgList.contains(userOrg)) {
allowed = true;
} else {
allowed = false;
}
}
return allowed;
}
return allowed;
return true;
}
}

0 comments on commit 134262e

Please sign in to comment.