aboutsummaryrefslogtreecommitdiffstats
path: root/vid-app-common/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'vid-app-common/src/main/java')
-rw-r--r--vid-app-common/src/main/java/org/onap/vid/roles/RoleProvider.java41
1 files changed, 34 insertions, 7 deletions
diff --git a/vid-app-common/src/main/java/org/onap/vid/roles/RoleProvider.java b/vid-app-common/src/main/java/org/onap/vid/roles/RoleProvider.java
index c35f5f704..84b0fa934 100644
--- a/vid-app-common/src/main/java/org/onap/vid/roles/RoleProvider.java
+++ b/vid-app-common/src/main/java/org/onap/vid/roles/RoleProvider.java
@@ -21,6 +21,9 @@
package org.onap.vid.roles;
+import static java.util.stream.Collectors.toMap;
+import static org.apache.commons.collections4.CollectionUtils.emptyIfNull;
+
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.ArrayList;
@@ -31,14 +34,19 @@ import java.util.Optional;
import java.util.function.Function;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
+import org.jetbrains.annotations.NotNull;
import org.onap.portalsdk.core.logging.logic.EELFLoggerDelegate;
import org.onap.portalsdk.core.web.support.UserUtils;
import org.onap.vid.aai.AaiResponse;
import org.onap.vid.aai.exceptions.RoleParsingException;
+import org.onap.vid.category.CategoryParameterOptionRep;
+import org.onap.vid.category.CategoryParametersResponse;
+import org.onap.vid.model.CategoryParameter.Family;
import org.onap.vid.model.ModelConstants;
import org.onap.vid.model.Subscriber;
import org.onap.vid.model.SubscriberList;
import org.onap.vid.services.AaiService;
+import org.onap.vid.services.CategoryParameterService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -54,21 +62,27 @@ public class RoleProvider {
private Function<HttpServletRequest, Integer> getUserIdFunction;
private Function<HttpServletRequest, Map> getRolesFunction;
private final RoleValidatorFactory roleValidatorFactory;
+ private final CategoryParameterService categoryParameterService;
+
@Autowired
- public RoleProvider(AaiService aaiService, RoleValidatorFactory roleValidatorFactory) {
+ public RoleProvider(AaiService aaiService, RoleValidatorFactory roleValidatorFactory,
+ CategoryParameterService categoryParameterService) {
this.aaiService=aaiService;
this.roleValidatorFactory = roleValidatorFactory;
+ this.categoryParameterService = categoryParameterService;
getUserIdFunction = UserUtils::getUserId;
getRolesFunction = UserUtils::getRoles;
}
RoleProvider(AaiService aaiService, RoleValidatorFactory roleValidatorFactory,
- Function<HttpServletRequest, Integer> getUserIdFunction, Function<HttpServletRequest, Map> getRolesFunction) {
+ Function<HttpServletRequest, Integer> getUserIdFunction, Function<HttpServletRequest, Map> getRolesFunction,
+ CategoryParameterService categoryParameterService) {
this.aaiService = aaiService;
this.roleValidatorFactory = roleValidatorFactory;
this.getRolesFunction = getRolesFunction;
this.getUserIdFunction = getUserIdFunction;
+ this.categoryParameterService = categoryParameterService;
}
public List<Role> getUserRoles(HttpServletRequest request) {
@@ -79,6 +93,8 @@ public class RoleProvider {
List<Role> roleList = new ArrayList<>();
Map roles = getRolesFunction.apply(request);
+ final Map<String, String> owningEntityMap = owningEntityNameToOwningEntityIdMapper();
+
for (Object role : roles.keySet()) {
org.onap.portalsdk.core.domain.Role sdkRol = (org.onap.portalsdk.core.domain.Role) roles.get(role);
@@ -90,7 +106,7 @@ public class RoleProvider {
continue;
}
String[] roleParts = splitRole((sdkRol.getName()), logPrefix);
- roleList.add(createRoleFromStringArr(roleParts, logPrefix));
+ roleList.add(createRoleFromStringArr(roleParts, logPrefix, owningEntityMap));
String msg = String.format("%s User %s got permissions %s", logPrefix, userId, Arrays.toString(roleParts));
LOG.debug(EELFLoggerDelegate.debugLogger, msg);
} catch (Exception e) {
@@ -140,9 +156,9 @@ public class RoleProvider {
return replacement;
}
- public Role createRoleFromStringArr(String[] roleParts, String rolePrefix) throws RoleParsingException {
+ public Role createRoleFromStringArr(String[] roleParts, String rolePrefix, Map<String, String> owningEntityMap) throws RoleParsingException {
String globalCustomerID = replaceSubscriberNameToGlobalCustomerID(roleParts[0], rolePrefix);
- String owningEntityId = translateOwningEntityNameToOwningEntityId(roleParts[0]);
+ String owningEntityId = translateOwningEntityNameToOwningEntityId(roleParts[0], owningEntityMap);
try {
if (roleParts.length > 2) {
@@ -162,8 +178,19 @@ public class RoleProvider {
}
- private String translateOwningEntityNameToOwningEntityId(String owningEntityName) {
- return owningEntityName; // TODO: translate to id
+ // in case the owningEntity name is not found in the owningEntityMap - return the name
+ protected String translateOwningEntityNameToOwningEntityId(String owningEntityName, Map<String, String> owningEntityMap) {
+ return owningEntityMap.getOrDefault(owningEntityName, owningEntityName);
+ }
+
+ @NotNull
+ protected Map<String, String> owningEntityNameToOwningEntityIdMapper() {
+ CategoryParametersResponse categoryParametersResponse = categoryParameterService.getCategoryParameters(Family.PARAMETER_STANDARDIZATION);
+ Map<String, List<CategoryParameterOptionRep>> categoryMap = categoryParametersResponse.getCategoryParameters();
+ List<CategoryParameterOptionRep> owningEntityList = categoryMap.get("owningEntity");
+
+ return emptyIfNull(owningEntityList).stream().collect(toMap(
+ CategoryParameterOptionRep::getName, CategoryParameterOptionRep::getId));
}
public RoleValidator getUserRolesValidator(HttpServletRequest request) {