This is an automated email from the ASF dual-hosted git repository. xxyu pushed a commit to branch kylin5 in repository https://gitbox.apache.org/repos/asf/kylin.git
commit 9bf63e01838fee5eb2fc50332c43a14bc0ea824d Author: Jiale He <35652389+jial...@users.noreply.github.com> AuthorDate: Tue Feb 28 10:11:04 2023 +0800 KYLIN-5535 Fix the username suffix matching --- .../kylin/metadata/user/NKylinUserManager.java | 20 +++----------------- .../kylin/metadata/user/NKylinUserManagerTest.java | 12 ++++++++++++ 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/src/core-metadata/src/main/java/org/apache/kylin/metadata/user/NKylinUserManager.java b/src/core-metadata/src/main/java/org/apache/kylin/metadata/user/NKylinUserManager.java index 4b487a6841..ea0b184068 100644 --- a/src/core-metadata/src/main/java/org/apache/kylin/metadata/user/NKylinUserManager.java +++ b/src/core-metadata/src/main/java/org/apache/kylin/metadata/user/NKylinUserManager.java @@ -23,7 +23,6 @@ import static org.apache.kylin.common.persistence.ResourceStore.USER_ROOT; import java.io.IOException; import java.util.ArrayList; import java.util.List; -import java.util.NavigableSet; import java.util.Objects; import java.util.Set; import java.util.stream.Collectors; @@ -92,7 +91,8 @@ public class NKylinUserManager { return user; } return Objects.nonNull(user) ? user - : crud.listPartial(path -> StringUtils.endsWithIgnoreCase(path, name)).stream().findAny().orElse(null); + : crud.listPartial(path -> StringUtils.endsWithIgnoreCase(path, name)).stream() + .filter(u -> StringUtils.equalsIgnoreCase(u.getUsername(), name)).findAny().orElse(null); } public List<ManagedUser> list() { @@ -122,21 +122,7 @@ public class NKylinUserManager { } public boolean exists(String username) { - if (StringUtils.isEmpty(username)) { - return false; - } - ManagedUser user = crud.get(username); - if (getConfig().isMetadataKeyCaseInSensitiveEnabled()) { - return Objects.nonNull(user); - } - if (Objects.nonNull(user)) { - return true; - } - NavigableSet<String> users = getStore().listResources(USER_ROOT); - if (Objects.isNull(users)) { - return false; - } - return users.stream().anyMatch(path -> StringUtils.endsWithIgnoreCase(path, username)); + return Objects.nonNull(get(username)); } public Set<String> getUserGroups(String userName) { diff --git a/src/core-metadata/src/test/java/org/apache/kylin/metadata/user/NKylinUserManagerTest.java b/src/core-metadata/src/test/java/org/apache/kylin/metadata/user/NKylinUserManagerTest.java index c5246228dd..6f57b71d17 100644 --- a/src/core-metadata/src/test/java/org/apache/kylin/metadata/user/NKylinUserManagerTest.java +++ b/src/core-metadata/src/test/java/org/apache/kylin/metadata/user/NKylinUserManagerTest.java @@ -68,4 +68,16 @@ class NKylinUserManagerTest extends NLocalFileMetadataTestCase { Assertions.assertNull(manager.get("notexist")); Assertions.assertNull(manager.get(null)); } + + @Test + void testNameSuffix() { + NKylinUserManager manager = NKylinUserManager.getInstance(getTestConfig()); + ManagedUser normalUser = new ManagedUser("test_ut", "KYLIN", false, Arrays.asList( + new SimpleGrantedAuthority(Constant.ROLE_ANALYST), new SimpleGrantedAuthority(Constant.ROLE_MODELER))); + manager.update(normalUser); + Assertions.assertTrue(manager.exists("test_ut")); + Assertions.assertFalse(manager.exists("ut")); + Assertions.assertNotNull(manager.get("test_ut")); + Assertions.assertNull(manager.get("ut")); + } }