diff --git a/src/main/java/org/cbioportal/application/security/CancerStudyPermissionEvaluator.java b/src/main/java/org/cbioportal/application/security/CancerStudyPermissionEvaluator.java index e4b32bd5ea3..3875339bb7c 100644 --- a/src/main/java/org/cbioportal/application/security/CancerStudyPermissionEvaluator.java +++ b/src/main/java/org/cbioportal/application/security/CancerStudyPermissionEvaluator.java @@ -368,7 +368,7 @@ private boolean hasAccessToCancerStudy( Arrays.stream(cancerStudy.getGroups().split(";")) .filter(g -> !g.isEmpty()) .collect(Collectors.toSet()); - if (!Collections.disjoint(groups, grantedAuthorities)) { + if (!caseInsensitiveDisjoint(groups, grantedAuthorities)) { if (log.isDebugEnabled()) { log.debug("hasAccessToCancerStudy(), user has access by groups return true"); } @@ -393,6 +393,12 @@ private boolean hasAccessToCancerStudy( return toReturn; } + private static boolean caseInsensitiveDisjoint(Collection c1, Collection c2) { + Set upperC1 = c1.stream().map(String::toUpperCase).collect(Collectors.toSet()); + Set upperC2 = c2.stream().map(String::toUpperCase).collect(Collectors.toSet()); + return Collections.disjoint(upperC1, upperC2); + } + private boolean hasAccessToCancerStudy( Authentication authentication, String cancerStudyId, Object permission) { // everybody has access the 'all' cancer study