From bc75f2b7df1363a869bf335820ad4bd1d8c39a46 Mon Sep 17 00:00:00 2001 From: Omid Manikhi Date: Tue, 16 Jun 2026 13:46:07 +0200 Subject: [PATCH] Adds support for '+' as a wildcard role that enforces Algolia role verification. --- .../java/se/simonsoft/cms/item/info/CmsCurrentUserBase.java | 2 +- .../se/simonsoft/cms/item/info/CmsCurrentUserBaseTest.java | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/se/simonsoft/cms/item/info/CmsCurrentUserBase.java b/src/main/java/se/simonsoft/cms/item/info/CmsCurrentUserBase.java index 8b43284..b01fdec 100644 --- a/src/main/java/se/simonsoft/cms/item/info/CmsCurrentUserBase.java +++ b/src/main/java/se/simonsoft/cms/item/info/CmsCurrentUserBase.java @@ -24,7 +24,7 @@ public abstract class CmsCurrentUserBase implements CmsCurrentUser { public boolean hasRole(Set expectedRoles) { Set roles = (this.getUserRoles() == null) ? new HashSet<>() : new HashSet<>(List.of(this.getUserRoles().split(","))); if (expectedRoles == null) return false; - if (expectedRoles.size() == 1 && expectedRoles.contains("*")) return true; + if (expectedRoles.size() == 1 && (expectedRoles.contains("*") || expectedRoles.contains("+"))) return true; for (String role : expectedRoles) { if (roles.contains(role)) return true; } diff --git a/src/test/java/se/simonsoft/cms/item/info/CmsCurrentUserBaseTest.java b/src/test/java/se/simonsoft/cms/item/info/CmsCurrentUserBaseTest.java index 338ecec..e41ba2f 100644 --- a/src/test/java/se/simonsoft/cms/item/info/CmsCurrentUserBaseTest.java +++ b/src/test/java/se/simonsoft/cms/item/info/CmsCurrentUserBaseTest.java @@ -106,6 +106,10 @@ public String getUserRoles() { }; Set expectedRoles = new HashSet<>(); + expectedRoles.add("+"); + assertTrue(cmsCurrentUserBaseMock.hasRole(expectedRoles)); + expectedRoles.clear(); + expectedRoles.add("*"); assertTrue(cmsCurrentUserBaseMock.hasRole(expectedRoles));