You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@shardingsphere.apache.org by pa...@apache.org on 2021/03/17 07:41:43 UTC

[shardingsphere] branch master updated: Refactor ShardingSpherePrivilege (#9703)

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

panjuan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git


The following commit(s) were added to refs/heads/master by this push:
     new 663d059  Refactor ShardingSpherePrivilege (#9703)
663d059 is described below

commit 663d0598c09bde2a065a9cc579a243ea747a07f2
Author: Liang Zhang <te...@163.com>
AuthorDate: Wed Mar 17 15:40:22 2021 +0800

    Refactor ShardingSpherePrivilege (#9703)
    
    * Refactor Grantee
    
    * Refactor ShardingSpherePrivilege
    
    * Refactor ShardingSpherePrivilege
---
 .../infra/metadata/auth/builder/PrivilegeBuilder.java     |  2 +-
 .../metadata/auth/builtin/DefaultAuthentication.java      |  2 +-
 .../auth/model/privilege/AdministrationPrivilege.java     |  5 ++---
 .../metadata/auth/model/privilege/PrivilegeType.java      |  2 +-
 .../auth/model/privilege/ShardingSpherePrivilege.java     | 15 +++++++--------
 .../metadata/auth/model/privilege/data/DataPrivilege.java |  5 ++---
 .../infra/metadata/auth/model/user/Grantee.java           | 14 ++++++++++----
 .../metadata/auth/model/user/ShardingSphereUser.java      |  2 +-
 .../proxy/frontend/mysql/MySQLFrontendEngineTest.java     |  2 +-
 .../mysql/auth/MySQLAuthenticationHandlerTest.java        |  2 +-
 .../auth/PostgreSQLAuthenticationEngineTest.java          |  2 +-
 11 files changed, 28 insertions(+), 25 deletions(-)

diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/builder/PrivilegeBuilder.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/builder/PrivilegeBuilder.java
index e3f939d..f467dc3 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/builder/PrivilegeBuilder.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/builder/PrivilegeBuilder.java
@@ -79,7 +79,7 @@ public final class PrivilegeBuilder {
     private static Map<ShardingSphereUser, ShardingSpherePrivilege> getDefaultShardingSpherePrivileges(final Collection<ShardingSphereUser> users) {
         Map<ShardingSphereUser, ShardingSpherePrivilege> result = new LinkedHashMap<>();
         ShardingSpherePrivilege privilege = new ShardingSpherePrivilege();
-        privilege.setSuper();
+        privilege.setSuperPrivilege();
         users.forEach(each -> result.put(each, privilege));
         return result;
     }
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/builtin/DefaultAuthentication.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/builtin/DefaultAuthentication.java
index 6c79a94..4dac150 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/builtin/DefaultAuthentication.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/builtin/DefaultAuthentication.java
@@ -46,7 +46,7 @@ public final class DefaultAuthentication implements Authentication {
     
     private ShardingSpherePrivilege createShardingSpherePrivilege() {
         ShardingSpherePrivilege result = new ShardingSpherePrivilege();
-        result.setSuper();
+        result.setSuperPrivilege();
         return result;
     }
     
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/model/privilege/AdministrationPrivilege.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/model/privilege/AdministrationPrivilege.java
index 32df2e3..fd038f9 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/model/privilege/AdministrationPrivilege.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/model/privilege/AdministrationPrivilege.java
@@ -42,11 +42,10 @@ public final class AdministrationPrivilege {
     
     /**
      * Set super privilege.
-     *
      */
-    public void setSuper() {
+    public void setSuperPrivilege() {
         for (PrivilegeType each : PrivilegeType.values()) {
-            if (!each.equals(PrivilegeType.GRANT)) {
+            if (each != PrivilegeType.GRANT) {
                 privileges.add(each);
             }
         }
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/model/privilege/PrivilegeType.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/model/privilege/PrivilegeType.java
index b64a1dd..ee74dcd 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/model/privilege/PrivilegeType.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/model/privilege/PrivilegeType.java
@@ -28,6 +28,7 @@ import lombok.RequiredArgsConstructor;
 @Getter
 public enum PrivilegeType {
     
+    SUPER("SUPER"),
     SELECT("SELECT"),
     INSERT("INSERT"),
     UPDATE("UPDATE"),
@@ -44,7 +45,6 @@ public enum PrivilegeType {
     INDEX("INDEX"),
     ALTER("ALTER"),
     SHOW_DB("SHOW_DB"),
-    SUPER("SUPER"),
     CREATE_TMP("CREATE_TMP"),
     LOCK_TABLES("LOCK_TABLES"),
     EXECUTE("EXECUTE"),
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/model/privilege/ShardingSpherePrivilege.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/model/privilege/ShardingSpherePrivilege.java
index 0d6e6d7..9562952 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/model/privilege/ShardingSpherePrivilege.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/model/privilege/ShardingSpherePrivilege.java
@@ -32,22 +32,21 @@ public final class ShardingSpherePrivilege {
     
     /**
      * Set super privilege.
-     *
      */
-    public void setSuper() {
-        administrationPrivilege.setSuper();
-        dataPrivilege.setSuper();
+    public void setSuperPrivilege() {
+        administrationPrivilege.setSuperPrivilege();
+        dataPrivilege.setSuperPrivilege();
     }
     
     @Override
-    public boolean equals(final Object o) {
-        if (!(o instanceof ShardingSpherePrivilege)) {
+    public boolean equals(final Object obj) {
+        if (!(obj instanceof ShardingSpherePrivilege)) {
             return false;
         }
-        if (!administrationPrivilege.getPrivileges().equals(((ShardingSpherePrivilege) o).getAdministrationPrivilege().getPrivileges())) {
+        if (!administrationPrivilege.getPrivileges().equals(((ShardingSpherePrivilege) obj).administrationPrivilege.getPrivileges())) {
             return false;
         }
-        if (!dataPrivilege.equals(((ShardingSpherePrivilege) o).getDataPrivilege())) {
+        if (!dataPrivilege.equals(((ShardingSpherePrivilege) obj).dataPrivilege)) {
             return false;
         }
         return true;
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/model/privilege/data/DataPrivilege.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/model/privilege/data/DataPrivilege.java
index c06c704..f443fb1 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/model/privilege/data/DataPrivilege.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/model/privilege/data/DataPrivilege.java
@@ -75,11 +75,10 @@ public final class DataPrivilege {
     
     /**
      * Set super privilege.
-     *
      */
-    public void setSuper() {
+    public void setSuperPrivilege() {
         for (PrivilegeType each : PrivilegeType.values()) {
-            if (!each.equals(PrivilegeType.GRANT)) {
+            if (each != PrivilegeType.GRANT) {
                 globalPrivileges.add(each);
             }
         }
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/model/user/Grantee.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/model/user/Grantee.java
index 183e158..86c14cb 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/model/user/Grantee.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/model/user/Grantee.java
@@ -37,15 +37,21 @@ public final class Grantee {
     public boolean equals(final Object obj) {
         if (obj instanceof Grantee) {
             Grantee grantee = (Grantee) obj;
-            return grantee.getUsername().equalsIgnoreCase(username) && (grantee.getHostname().equalsIgnoreCase(hostname) || Strings.isNullOrEmpty(hostname)
-                    || "%".equals(hostname));
+            return grantee.username.equalsIgnoreCase(username) && isPermittedHost(grantee);
         }
         return false;
     }
     
+    private boolean isPermittedHost(final Grantee grantee) {
+        return grantee.hostname.equalsIgnoreCase(hostname) || isUnlimitedHost();
+    }
+    
+    private boolean isUnlimitedHost() {
+        return Strings.isNullOrEmpty(hostname) || "%".equals(hostname);
+    }
+    
     @Override
     public int hashCode() {
-        return (Strings.isNullOrEmpty(hostname) || "%".equals(hostname))
-                ? Objects.hashCode(username.toUpperCase()) : Objects.hashCode(username.toUpperCase(), hostname.toUpperCase());
+        return isUnlimitedHost() ? Objects.hashCode(username.toUpperCase()) : Objects.hashCode(username.toUpperCase(), hostname.toUpperCase());
     }
 }
diff --git a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/model/user/ShardingSphereUser.java b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/model/user/ShardingSphereUser.java
index e979735..eb89db2 100644
--- a/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/model/user/ShardingSphereUser.java
+++ b/shardingsphere-infra/shardingsphere-infra-common/src/main/java/org/apache/shardingsphere/infra/metadata/auth/model/user/ShardingSphereUser.java
@@ -32,7 +32,7 @@ public final class ShardingSphereUser {
     private final String password;
     
     public ShardingSphereUser(final String username, final String password, final String hostname) {
-        this.grantee = new Grantee(username, hostname);
+        grantee = new Grantee(username, hostname);
         this.password = password;
     }
 }
diff --git a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/MySQLFrontendEngineTest.java b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/MySQLFrontendEngineTest.java
index ce12551..9330567 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/MySQLFrontendEngineTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/MySQLFrontendEngineTest.java
@@ -152,7 +152,7 @@ public final class MySQLFrontendEngineTest {
     private void setAuthentication(final ShardingSphereUser user) {
         DefaultAuthentication authentication = new DefaultAuthentication();
         ShardingSpherePrivilege privilege = new ShardingSpherePrivilege();
-        privilege.setSuper();
+        privilege.setSuperPrivilege();
         authentication.getAuthentication().put(user, privilege);
         initProxyContext(authentication);
     }
diff --git a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/auth/MySQLAuthenticationHandlerTest.java b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/auth/MySQLAuthenticationHandlerTest.java
index 36c6a7b..074116e 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/auth/MySQLAuthenticationHandlerTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-mysql/src/test/java/org/apache/shardingsphere/proxy/frontend/mysql/auth/MySQLAuthenticationHandlerTest.java
@@ -115,7 +115,7 @@ public final class MySQLAuthenticationHandlerTest {
     private void setAuthentication(final ShardingSphereUser user) {
         DefaultAuthentication authentication = new DefaultAuthentication();
         ShardingSpherePrivilege privilege = new ShardingSpherePrivilege();
-        privilege.setSuper();
+        privilege.setSuperPrivilege();
         authentication.getAuthentication().put(user, privilege);
         initProxyContext(authentication);
     }
diff --git a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/auth/PostgreSQLAuthenticationEngineTest.java b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/auth/PostgreSQLAuthenticationEngineTest.java
index b838c3a..3edc8e5 100644
--- a/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/auth/PostgreSQLAuthenticationEngineTest.java
+++ b/shardingsphere-proxy/shardingsphere-proxy-frontend/shardingsphere-proxy-frontend-postgresql/src/test/java/org/apache/shardingsphere/proxy/frontend/postgresql/auth/PostgreSQLAuthenticationEngineTest.java
@@ -125,7 +125,7 @@ public final class PostgreSQLAuthenticationEngineTest {
         ProxyContext proxyContext = ProxyContext.getInstance();
         StandardMetaDataContexts standardMetaDataContexts = new StandardMetaDataContexts();
         ShardingSpherePrivilege privilege = new ShardingSpherePrivilege();
-        privilege.setSuper();
+        privilege.setSuperPrivilege();
         (standardMetaDataContexts.getAuthentication()).getAuthentication().put(new ShardingSphereUser(username, password, ""), privilege);
         proxyContext.init(standardMetaDataContexts, mock(TransactionContexts.class));
         actual = engine.auth(channelHandlerContext, payload);