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 <[email protected]>
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);