This is an automated email from the ASF dual-hosted git repository.

liuxun pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gravitino.git


The following commit(s) were added to refs/heads/main by this push:
     new b99ba0030f [#8181] fix(authz): Fix can not list metalake after disable 
metalake (#8239)
b99ba0030f is described below

commit b99ba0030fe7a7916adc247c13e5e1812ba20102
Author: yangyang zhong <[email protected]>
AuthorDate: Fri Aug 22 10:15:17 2025 +0800

    [#8181] fix(authz): Fix can not list metalake after disable metalake (#8239)
    
    ### What changes were proposed in this pull request?
    
    Fix can not list metalake after disable metalake
    
    ### Why are the changes needed?
    
    Fix: #8181
    
    ### Does this PR introduce _any_ user-facing change?
    
    None
    
    ### How was this patch tested?
    
    
    
org.apache.gravitino.client.integration.test.authorization.MetalakeAuthorizationIT
---
 .../authorization/MetalakeAuthorizationIT.java     | 46 +++++++++++++---------
 .../authorization/jcasbin/JcasbinAuthorizer.java   |  7 +++-
 2 files changed, 33 insertions(+), 20 deletions(-)

diff --git 
a/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/MetalakeAuthorizationIT.java
 
b/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/MetalakeAuthorizationIT.java
index 2b72b80e1e..70810c251a 100644
--- 
a/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/MetalakeAuthorizationIT.java
+++ 
b/clients/client-java/src/test/java/org/apache/gravitino/client/integration/test/authorization/MetalakeAuthorizationIT.java
@@ -48,6 +48,10 @@ public class MetalakeAuthorizationIT extends 
BaseRestApiAuthorizationIT {
 
   private GravitinoAdminClient serviceAdminButNotOwnerClient;
 
+  private static String testMetalake2 = "testMetalake2";
+
+  private static String testMetalake3 = "testMetalake3";
+
   @BeforeAll
   @Override
   public void startIntegrationTest() throws Exception {
@@ -72,23 +76,27 @@ public class MetalakeAuthorizationIT extends 
BaseRestApiAuthorizationIT {
         "Only service admins can create metalakes, current user can't create 
the metalake,  you should configure it in the server configuration first",
         ForbiddenException.class,
         () -> {
-          normalUserClient.createMetalake("testMetalake2", "", new 
HashMap<>());
+          normalUserClient.createMetalake(testMetalake2, "", new HashMap<>());
         });
-    serviceAdminClient.createMetalake("testMetalake2", "", new HashMap<>());
-    serviceAdminClient.createMetalake("testMetalake3", "", new HashMap<>());
+    serviceAdminClient.createMetalake(testMetalake2, "", new HashMap<>());
+    serviceAdminClient.createMetalake(testMetalake3, "", new HashMap<>());
   }
 
   @Test
   @Order(2)
   public void testListMetalake() {
     assertMetalakeEquals(
-        new String[] {METALAKE, "testMetalake2", "testMetalake3"},
-        serviceAdminClient.listMetalakes());
+        new String[] {METALAKE, testMetalake2, testMetalake3}, 
serviceAdminClient.listMetalakes());
+    serviceAdminClient.disableMetalake(testMetalake2);
+    assertMetalakeEquals(new String[] {METALAKE}, 
normalUserClient.listMetalakes());
+    assertMetalakeEquals(
+        new String[] {METALAKE, testMetalake2, testMetalake3}, 
serviceAdminClient.listMetalakes());
+    serviceAdminClient.enableMetalake(testMetalake2);
     assertMetalakeEquals(new String[] {METALAKE}, 
normalUserClient.listMetalakes());
     assertMetalakeEquals(new String[] {METALAKE}, 
serviceAdminButNotOwnerClient.listMetalakes());
-    
serviceAdminClient.loadMetalake("testMetalake2").addUser(SERVICE_ADMIN_BUT_NOT_OWNER);
+    
serviceAdminClient.loadMetalake(testMetalake2).addUser(SERVICE_ADMIN_BUT_NOT_OWNER);
     assertMetalakeEquals(
-        new String[] {METALAKE, "testMetalake2"}, 
serviceAdminButNotOwnerClient.listMetalakes());
+        new String[] {METALAKE, testMetalake2}, 
serviceAdminButNotOwnerClient.listMetalakes());
     GravitinoAdminClient tempClient =
         
GravitinoAdminClient.builder(serverUri).withSimpleAuth("tempUse").build();
     assertMetalakeEquals(new String[] {}, tempClient.listMetalakes());
@@ -98,28 +106,28 @@ public class MetalakeAuthorizationIT extends 
BaseRestApiAuthorizationIT {
   @Order(3)
   public void testLoadMetalake() {
     serviceAdminClient.loadMetalake(METALAKE);
-    serviceAdminClient.loadMetalake("testMetalake2");
-    serviceAdminClient.loadMetalake("testMetalake3");
+    serviceAdminClient.loadMetalake(testMetalake2);
+    serviceAdminClient.loadMetalake(testMetalake3);
     normalUserClient.loadMetalake(METALAKE);
     assertThrows(
         "Current user access metadata {testMetalake2}",
         ForbiddenException.class,
         () -> {
-          normalUserClient.loadMetalake("testMetalake2");
+          normalUserClient.loadMetalake(testMetalake2);
         });
     assertThrows(
         "Current user access metadata {testMetalake3}",
         ForbiddenException.class,
         () -> {
-          normalUserClient.loadMetalake("testMetalake3");
+          normalUserClient.loadMetalake(testMetalake3);
         });
     serviceAdminButNotOwnerClient.loadMetalake(METALAKE);
-    serviceAdminButNotOwnerClient.loadMetalake("testMetalake2");
+    serviceAdminButNotOwnerClient.loadMetalake(testMetalake2);
     assertThrows(
         "Current user access metadata {testMetalake3}",
         ForbiddenException.class,
         () -> {
-          serviceAdminButNotOwnerClient.loadMetalake("testMetalake3");
+          serviceAdminButNotOwnerClient.loadMetalake(testMetalake3);
         });
   }
 
@@ -131,16 +139,16 @@ public class MetalakeAuthorizationIT extends 
BaseRestApiAuthorizationIT {
         ForbiddenException.class,
         () -> {
           serviceAdminButNotOwnerClient.alterMetalake(
-              "testMetalake2", MetalakeChange.setProperty("key1", "value1"));
+              testMetalake2, MetalakeChange.setProperty("key1", "value1"));
         });
     assertThrows(
         "Current user access metadata {testMetalake2}",
         ForbiddenException.class,
         () -> {
           normalUserClient.alterMetalake(
-              "testMetalake2", MetalakeChange.setProperty("key1", "value1"));
+              testMetalake2, MetalakeChange.setProperty("key1", "value1"));
         });
-    serviceAdminClient.alterMetalake("testMetalake2", 
MetalakeChange.setProperty("key1", "value1"));
+    serviceAdminClient.alterMetalake(testMetalake2, 
MetalakeChange.setProperty("key1", "value1"));
   }
 
   @Test
@@ -150,15 +158,15 @@ public class MetalakeAuthorizationIT extends 
BaseRestApiAuthorizationIT {
         "Current user access metadata {testMetalake2}",
         ForbiddenException.class,
         () -> {
-          serviceAdminButNotOwnerClient.dropMetalake("testMetalake3", true);
+          serviceAdminButNotOwnerClient.dropMetalake(testMetalake3, true);
         });
     assertThrows(
         "Current user access metadata {testMetalake2}",
         ForbiddenException.class,
         () -> {
-          normalUserClient.dropMetalake("testMetalake3", true);
+          normalUserClient.dropMetalake(testMetalake3, true);
         });
-    serviceAdminClient.dropMetalake("testMetalake3", true);
+    serviceAdminClient.dropMetalake(testMetalake3, true);
   }
 
   private void assertMetalakeEquals(
diff --git 
a/server-common/src/main/java/org/apache/gravitino/server/authorization/jcasbin/JcasbinAuthorizer.java
 
b/server-common/src/main/java/org/apache/gravitino/server/authorization/jcasbin/JcasbinAuthorizer.java
index 7db3f3f3fc..558573c936 100644
--- 
a/server-common/src/main/java/org/apache/gravitino/server/authorization/jcasbin/JcasbinAuthorizer.java
+++ 
b/server-common/src/main/java/org/apache/gravitino/server/authorization/jcasbin/JcasbinAuthorizer.java
@@ -163,7 +163,12 @@ public class JcasbinAuthorizer implements 
GravitinoAuthorizer {
       return false;
     }
     try {
-      return 
GravitinoEnv.getInstance().accessControlDispatcher().getUser(metalake, 
currentUserName)
+      return GravitinoEnv.getInstance()
+              .entityStore()
+              .get(
+                  NameIdentifierUtil.ofUser(metalake, currentUserName),
+                  Entity.EntityType.USER,
+                  UserEntity.class)
           != null;
     } catch (Exception e) {
       LOG.warn("Can not get user {} in metalake {}", currentUserName, 
metalake, e);

Reply via email to