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);