You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by xx...@apache.org on 2023/05/06 06:59:25 UTC

[kylin] 24/38: KYLIN-5535 Fix the username suffix matching

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 <35...@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"));
+    }
 }