+ Set<PDPPolicy> filteredPolicies = new HashSet<PDPPolicy>();
+ Set<String> scopes = null;
+ List<String> roles = null;
+ String userId = UserUtils.getUserSession(request).getOrgUserId();
+ List<Object> userRoles = PolicyController.getRoles(userId);
+ roles = new ArrayList<String>();
+ scopes = new HashSet<String>();
+ for(Object role: userRoles){
+ Roles userRole = (Roles) role;
+ roles.add(userRole.getRole());
+ if(userRole.getScope() != null){
+ if(userRole.getScope().contains(",")){
+ String[] multipleScopes = userRole.getScope().split(",");
+ for(int i =0; i < multipleScopes.length; i++){
+ scopes.add(multipleScopes[i]);
+ }
+ }else{
+ scopes.add(userRole.getScope());
+ }
+ }
+ }
+ if (roles.contains(SUPERADMIN) || roles.contains(SUPEREDITOR) || roles.contains(SUPERGUEST) ) {
+ this.groups.addAll(PolicyController.getPapEngine().getEcompPDPGroups());
+ }else{
+ if(!userRoles.isEmpty()){
+ if(!scopes.isEmpty()){
+ this.groups.addAll(PolicyController.getPapEngine().getEcompPDPGroups());
+ if(!groups.isEmpty()){
+ for(EcompPDPGroup group : groups){
+ Set<PDPPolicy> policies = group.getPolicies();
+ for(PDPPolicy policy : policies){
+ for(String scope : scopes){
+ scope = scope.replace(File.separator, ".");
+ String policyName = policy.getId();
+ if(policyName.contains(".Config_")){
+ policyName = policyName.substring(0, policyName.lastIndexOf(".Config_"));
+ }else if(policyName.contains(".Action_")){
+ policyName = policyName.substring(0, policyName.lastIndexOf(".Action_"));
+ }else if(policyName.contains(".Decision_")){
+ policyName = policyName.substring(0, policyName.lastIndexOf(".Decision_"));
+ }
+ if(policyName.startsWith(scope)){
+ filteredPolicies.add(policy);
+ }
+ }
+ }
+ groups.remove(group);
+ StdPDPGroup newGroup = (StdPDPGroup) group;
+ newGroup.setPolicies(filteredPolicies);
+ groups.add(newGroup);
+ }
+ }
+ }
+ }
+ }