X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=POLICY-SDK-APP%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fpolicy%2Futils%2FUserUtils.java;h=40c8396767690d0f065a9725f08aafed3fe1f74d;hb=refs%2Fchanges%2F20%2F82720%2F5;hp=1f68ffc0e0de30fc69752d102dc7f9a05396337e;hpb=97ce3b94390c10a1af43ed5614ca976095c0097d;p=policy%2Fengine.git diff --git a/POLICY-SDK-APP/src/main/java/org/onap/policy/utils/UserUtils.java b/POLICY-SDK-APP/src/main/java/org/onap/policy/utils/UserUtils.java index 1f68ffc0e..40c839676 100644 --- a/POLICY-SDK-APP/src/main/java/org/onap/policy/utils/UserUtils.java +++ b/POLICY-SDK-APP/src/main/java/org/onap/policy/utils/UserUtils.java @@ -2,7 +2,7 @@ * ============LICENSE_START======================================================= * ONAP Policy Engine * ================================================================================ - * Copyright (C) 2018 AT&T Intellectual Property. All rights reserved. + * Copyright (C) 2018-2019 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -20,49 +20,107 @@ package org.onap.policy.utils; import java.util.ArrayList; +import java.util.HashMap; import java.util.HashSet; import java.util.List; +import java.util.Map; import java.util.Set; import org.onap.policy.model.Roles; public final class UserUtils { - - private UserUtils () { - // Empty Constructor - } - - public static class Pair { - public final T t; - public final U u; - - public Pair (T t, U u) { - this.t = t; - this.u = u; - } - } - - public static Pair, List> checkRoleAndScope(List userRoles) { - Set scopes; - List roles; - //Check if the Role and Scope Size are Null get the values from db. - roles = new ArrayList<>(); - scopes = new HashSet<>(); - 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()); - } - } - } - return new Pair<>(scopes, roles); - } + + private UserUtils() { + // Empty Constructor + } + + public static class Pair { + public final T t; + public final U u; + + public Pair(T t, U u) { + this.t = t; + this.u = u; + } + } + + /** + * Check Role and its Scopes. + * + * @param userRoles list of UserRoles. + * @return return role and scope from UserRole Object. + */ + public static Pair, List> checkRoleAndScope(List userRoles) { + Set scopes; + List roles; + // Check if the Role and Scope Size are Null get the values from db. + roles = new ArrayList<>(); + scopes = new HashSet<>(); + 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(trimScope(multipleScopes[i])); + } + } else { + scopes.add(trimScope(userRole.getScope())); + } + } + } + return new Pair<>(scopes, roles); + } + + /** + * Get Role by Scope based on UserRole Object. + * + * @param userRoles list of UserRoles. + * @return return the map. + */ + public static Map getRoleByScope(List userRoles) { + Map rolesList = new HashMap<>(); + for (Object role : userRoles) { + Roles userRole = (Roles) role; + if (!userRole.getRole().startsWith("super-")) { + rolesList = addNonSuperUserScopes(userRole, rolesList); + } else { + rolesList.put("@All@", userRole.getRole()); + } + } + return rolesList; + } + + /** + * Read non super role scopes and add to map. + * + * @param userRole Role Object. + * @param rolesList roleList Object. + * @return return the map. + */ + private static Map addNonSuperUserScopes(Roles userRole, Map rolesList) { + if (userRole.getScope() != null && !(userRole.getScope().trim().isEmpty())) { + if (userRole.getScope().contains(",")) { + String[] multipleScopes = userRole.getScope().split(","); + for (int i = 0; i < multipleScopes.length; i++) { + rolesList.put(trimScope(multipleScopes[i]), userRole.getRole()); + } + } else { + rolesList.put(trimScope(userRole.getScope()), userRole.getRole()); + } + } + return rolesList; + } + + /** + * Trim Scope Value. + * + * @param scope string scope name. + * @return trim scope. + */ + private static String trimScope(String scope) { + return scope.replace("[", "").replace("]", "").replace("\"", "").trim(); + } }