This is an automated email from the ASF dual-hosted git repository.
yongzao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 33be57566cf Implement IAuditEntity interface for
TreeAccessCheckContext (#16469)
33be57566cf is described below
commit 33be57566cf7e96a0432cb1b8da4aba2c621062b
Author: Yongzao <[email protected]>
AuthorDate: Tue Sep 23 19:48:31 2025 +0800
Implement IAuditEntity interface for TreeAccessCheckContext (#16469)
---
.../org/apache/iotdb/db/auth/AuthorityChecker.java | 9 +-
.../rest/handler/AuthorizationHandler.java | 15 +-
.../load/TreeSchemaAutoCreatorAndVerifier.java | 2 +-
.../analyze/schema/AutoCreateSchemaExecutor.java | 6 +-
.../plan/relational/security/AccessControl.java | 3 +-
.../relational/security/AccessControlImpl.java | 5 +-
.../relational/security/AllowAllAccessControl.java | 3 +-
.../security/TreeAccessCheckContext.java | 102 +++++-
.../security/TreeAccessCheckVisitor.java | 346 +++++++++++----------
9 files changed, 309 insertions(+), 182 deletions(-)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/auth/AuthorityChecker.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/auth/AuthorityChecker.java
index df9fd988933..61c79979ad9 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/auth/AuthorityChecker.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/auth/AuthorityChecker.java
@@ -20,6 +20,7 @@
package org.apache.iotdb.db.auth;
import org.apache.iotdb.common.rpc.thrift.TSStatus;
+import org.apache.iotdb.commons.audit.UserEntity;
import org.apache.iotdb.commons.auth.AuthException;
import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.conf.CommonDescriptor;
@@ -153,16 +154,18 @@ public class AuthorityChecker {
public static TSStatus checkAuthority(Statement statement, IClientSession
session) {
long startTime = System.nanoTime();
try {
- return accessControl.checkPermissionBeforeProcess(statement,
session.getUsername());
+ return accessControl.checkPermissionBeforeProcess(
+ statement,
+ new UserEntity(session.getUserId(), session.getUsername(),
session.getClientAddress()));
} finally {
PERFORMANCE_OVERVIEW_METRICS.recordAuthCost(System.nanoTime() -
startTime);
}
}
- public static TSStatus checkAuthority(Statement statement, String userName) {
+ public static TSStatus checkAuthority(Statement statement, UserEntity
userEntity) {
long startTime = System.nanoTime();
try {
- return accessControl.checkPermissionBeforeProcess(statement, userName);
+ return accessControl.checkPermissionBeforeProcess(statement, userEntity);
} finally {
PERFORMANCE_OVERVIEW_METRICS.recordAuthCost(System.nanoTime() -
startTime);
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/handler/AuthorizationHandler.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/handler/AuthorizationHandler.java
index eba8d8b365f..989f5211670 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/handler/AuthorizationHandler.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/rest/handler/AuthorizationHandler.java
@@ -18,19 +18,32 @@
package org.apache.iotdb.db.protocol.rest.handler;
import org.apache.iotdb.common.rpc.thrift.TSStatus;
+import org.apache.iotdb.commons.audit.UserEntity;
+import org.apache.iotdb.commons.auth.entity.User;
import org.apache.iotdb.db.auth.AuthorityChecker;
+import org.apache.iotdb.db.auth.BasicAuthorityCache;
+import org.apache.iotdb.db.auth.ClusterAuthorityFetcher;
+import org.apache.iotdb.db.auth.IAuthorityFetcher;
import org.apache.iotdb.db.protocol.rest.model.ExecutionStatus;
import org.apache.iotdb.db.queryengine.plan.statement.Statement;
import org.apache.iotdb.rpc.TSStatusCode;
+import org.apache.ratis.util.MemoizedSupplier;
+
import javax.ws.rs.core.Response;
import javax.ws.rs.core.SecurityContext;
public class AuthorizationHandler {
+ private static final MemoizedSupplier<IAuthorityFetcher> authorityFetcher =
+ MemoizedSupplier.valueOf(() -> new ClusterAuthorityFetcher(new
BasicAuthorityCache()));
+
public Response checkAuthority(SecurityContext securityContext, Statement
statement) {
String userName = securityContext.getUserPrincipal().getName();
- TSStatus status = AuthorityChecker.checkAuthority(statement, userName);
+ User user = authorityFetcher.get().getUser(userName);
+ long userId = user == null ? -1 : user.getUserId();
+ TSStatus status =
+ AuthorityChecker.checkAuthority(statement, new UserEntity(userId,
userName, ""));
if (status.getCode() != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
return Response.ok()
.entity(new
ExecutionStatus().code(status.getCode()).message(status.getMessage()))
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/load/TreeSchemaAutoCreatorAndVerifier.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/load/TreeSchemaAutoCreatorAndVerifier.java
index 91fc7fd3e86..1bc8ba52b82 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/load/TreeSchemaAutoCreatorAndVerifier.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/load/TreeSchemaAutoCreatorAndVerifier.java
@@ -323,7 +323,7 @@ public class TreeSchemaAutoCreatorAndVerifier {
// 1.check Authority
TSStatus status =
AuthorityChecker.checkAuthority(
- statement, loadTsFileAnalyzer.context.getSession().getUserName());
+ statement,
loadTsFileAnalyzer.context.getSession().getUserEntity());
if (status.getCode() != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
throw new AuthException(TSStatusCode.representOf(status.getCode()),
status.getMessage());
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/AutoCreateSchemaExecutor.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/AutoCreateSchemaExecutor.java
index 9b8d1047ce0..6e17deddd3f 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/AutoCreateSchemaExecutor.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/analyze/schema/AutoCreateSchemaExecutor.java
@@ -505,7 +505,7 @@ class AutoCreateSchemaExecutor {
private List<MeasurementPath> executeInternalCreateTimeseriesStatement(
final Statement statement, final MPPQueryContext context) {
final TSStatus status =
- AuthorityChecker.checkAuthority(statement,
context.getSession().getUserName());
+ AuthorityChecker.checkAuthority(statement,
context.getSession().getUserEntity());
if (status.getCode() != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
throw new IoTDBRuntimeException(status.getMessage(), status.getCode());
}
@@ -546,7 +546,7 @@ class AutoCreateSchemaExecutor {
private void internalActivateTemplate(PartialPath devicePath,
MPPQueryContext context) {
ActivateTemplateStatement statement = new
ActivateTemplateStatement(devicePath);
TSStatus status =
- AuthorityChecker.checkAuthority(statement,
context.getSession().getUserName());
+ AuthorityChecker.checkAuthority(statement,
context.getSession().getUserEntity());
if (status.getCode() != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
throw new IoTDBRuntimeException(status.getMessage(), status.getCode());
}
@@ -564,7 +564,7 @@ class AutoCreateSchemaExecutor {
InternalBatchActivateTemplateStatement statement =
new
InternalBatchActivateTemplateStatement(devicesNeedActivateTemplate);
TSStatus status =
- AuthorityChecker.checkAuthority(statement,
context.getSession().getUserName());
+ AuthorityChecker.checkAuthority(statement,
context.getSession().getUserEntity());
if (status.getCode() != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
throw new IoTDBRuntimeException(status.getMessage(), status.getCode());
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/AccessControl.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/AccessControl.java
index 3f049c1c6cf..c8c9ee4d9ae 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/AccessControl.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/AccessControl.java
@@ -21,6 +21,7 @@ package
org.apache.iotdb.db.queryengine.plan.relational.security;
import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.commons.audit.IAuditEntity;
+import org.apache.iotdb.commons.audit.UserEntity;
import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.exception.auth.AccessDeniedException;
import org.apache.iotdb.commons.path.PartialPath;
@@ -218,7 +219,7 @@ public interface AccessControl {
// ====================================== TREE
=============================================
- TSStatus checkPermissionBeforeProcess(Statement statement, String userName);
+ TSStatus checkPermissionBeforeProcess(Statement statement, UserEntity
userEntity);
/** called by load */
TSStatus checkFullPathWriteDataPermission(
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/AccessControlImpl.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/AccessControlImpl.java
index a410d988842..94eac9ab5ea 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/AccessControlImpl.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/AccessControlImpl.java
@@ -21,6 +21,7 @@ package
org.apache.iotdb.db.queryengine.plan.relational.security;
import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.commons.audit.IAuditEntity;
+import org.apache.iotdb.commons.audit.UserEntity;
import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.exception.IllegalPathException;
import org.apache.iotdb.commons.exception.auth.AccessDeniedException;
@@ -410,8 +411,8 @@ public class AccessControlImpl implements AccessControl {
}
@Override
- public TSStatus checkPermissionBeforeProcess(Statement statement, String
userName) {
- return treeAccessCheckVisitor.process(statement, new
TreeAccessCheckContext(userName));
+ public TSStatus checkPermissionBeforeProcess(Statement statement, UserEntity
userEntity) {
+ return treeAccessCheckVisitor.process(statement, new
TreeAccessCheckContext(userEntity));
}
@Override
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/AllowAllAccessControl.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/AllowAllAccessControl.java
index d7a7f680d3e..b717e1104fd 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/AllowAllAccessControl.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/AllowAllAccessControl.java
@@ -21,6 +21,7 @@ package
org.apache.iotdb.db.queryengine.plan.relational.security;
import org.apache.iotdb.common.rpc.thrift.TSStatus;
import org.apache.iotdb.commons.audit.IAuditEntity;
+import org.apache.iotdb.commons.audit.UserEntity;
import org.apache.iotdb.commons.auth.entity.PrivilegeType;
import org.apache.iotdb.commons.path.PartialPath;
import
org.apache.iotdb.db.queryengine.plan.relational.metadata.QualifiedObjectName;
@@ -113,7 +114,7 @@ public class AllowAllAccessControl implements AccessControl
{
String username, Collection<PrivilegeType> privilegeTypes, IAuditEntity
auditEntity) {}
@Override
- public TSStatus checkPermissionBeforeProcess(Statement statement, String
userName) {
+ public TSStatus checkPermissionBeforeProcess(Statement statement, UserEntity
userEntity) {
return SUCCEED;
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/TreeAccessCheckContext.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/TreeAccessCheckContext.java
index 231f49332eb..30ff465d0a2 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/TreeAccessCheckContext.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/TreeAccessCheckContext.java
@@ -19,11 +19,105 @@
package org.apache.iotdb.db.queryengine.plan.relational.security;
-public class TreeAccessCheckContext {
+import org.apache.iotdb.commons.audit.AuditEventType;
+import org.apache.iotdb.commons.audit.AuditLogOperation;
+import org.apache.iotdb.commons.audit.IAuditEntity;
+import org.apache.iotdb.commons.audit.UserEntity;
+import org.apache.iotdb.commons.auth.entity.PrivilegeType;
- final String userName;
+public class TreeAccessCheckContext implements IAuditEntity {
- public TreeAccessCheckContext(String userName) {
- this.userName = userName;
+ private final UserEntity userEntity;
+
+ public TreeAccessCheckContext(UserEntity userEntity) {
+ this.userEntity = userEntity;
+ }
+
+ @Override
+ public long getUserId() {
+ return userEntity.getUserId();
+ }
+
+ @Override
+ public String getUsername() {
+ return userEntity.getUsername();
+ }
+
+ @Override
+ public String getCliHostname() {
+ return userEntity.getCliHostname();
+ }
+
+ private AuditEventType auditEventType;
+ private AuditLogOperation auditLogOperation;
+ private PrivilegeType privilegeType;
+ private boolean result;
+ private String database;
+ private String sqlString;
+
+ @Override
+ public AuditEventType getAuditEventType() {
+ return auditEventType;
+ }
+
+ @Override
+ public IAuditEntity setAuditEventType(AuditEventType auditEventType) {
+ this.auditEventType = auditEventType;
+ return this;
+ }
+
+ @Override
+ public AuditLogOperation getAuditLogOperation() {
+ return auditLogOperation;
+ }
+
+ @Override
+ public IAuditEntity setAuditLogOperation(AuditLogOperation
auditLogOperation) {
+ this.auditLogOperation = auditLogOperation;
+ return this;
+ }
+
+ @Override
+ public PrivilegeType getPrivilegeType() {
+ return privilegeType;
+ }
+
+ @Override
+ public IAuditEntity setPrivilegeType(PrivilegeType privilegeType) {
+ this.privilegeType = privilegeType;
+ return this;
+ }
+
+ @Override
+ public boolean getResult() {
+ return result;
+ }
+
+ @Override
+ public IAuditEntity setResult(boolean result) {
+ this.result = result;
+ return this;
+ }
+
+ @Override
+ public String getDatabase() {
+ return database;
+ }
+
+ @Override
+ public IAuditEntity setDatabase(String database) {
+ this.database = database;
+ return this;
+ }
+
+ @Override
+ public String getSqlString() {
+ return sqlString;
+ }
+
+ @Override
+ public IAuditEntity setSqlString(String sqlString) {
+ this.sqlString = sqlString;
+ return this;
}
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/TreeAccessCheckVisitor.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/TreeAccessCheckVisitor.java
index 16633a14359..b0e018eb8aa 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/TreeAccessCheckVisitor.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/security/TreeAccessCheckVisitor.java
@@ -161,7 +161,7 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
@Override
public TSStatus visitNode(StatementNode node, TreeAccessCheckContext
context) {
- if (AuthorityChecker.SUPER_USER.equals(context.userName)) {
+ if (AuthorityChecker.SUPER_USER.equals(context.getUsername())) {
return SUCCEED;
}
return AuthorityChecker.getTSStatus(false, "Only the admin user can
perform this operation");
@@ -170,12 +170,12 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
@Override
public TSStatus visitAuthorityInformation(
AuthorityInformationStatement statement, TreeAccessCheckContext context)
{
- if (AuthorityChecker.SUPER_USER.equals(context.userName)) {
+ if (AuthorityChecker.SUPER_USER.equals(context.getUsername())) {
return SUCCEED;
}
try {
statement.setAuthorityScope(
- AuthorityChecker.getAuthorizedPathTree(context.userName,
PrivilegeType.READ_SCHEMA));
+ AuthorityChecker.getAuthorizedPathTree(context.getUsername(),
PrivilegeType.READ_SCHEMA));
} catch (AuthException e) {
return new TSStatus(e.getCode().getStatusCode());
}
@@ -187,7 +187,7 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
@Override
public TSStatus visitCreateSchemaTemplate(
CreateSchemaTemplateStatement createTemplateStatement,
TreeAccessCheckContext context) {
- return checkSystemAuth(context.userName);
+ return checkSystemAuth(context.getUsername());
}
@Override
@@ -198,38 +198,38 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
if (status.getCode() != TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
return status;
}
- return checkSystemAuth(context.userName);
+ return checkSystemAuth(context.getUsername());
}
@Override
public TSStatus visitActivateTemplate(
ActivateTemplateStatement statement, TreeAccessCheckContext context) {
return checkTimeSeriesPermission(
- context.userName, statement.getPaths(), PrivilegeType.WRITE_SCHEMA);
+ context.getUsername(), statement.getPaths(),
PrivilegeType.WRITE_SCHEMA);
}
@Override
public TSStatus visitBatchActivateTemplate(
BatchActivateTemplateStatement statement, TreeAccessCheckContext
context) {
return checkTimeSeriesPermission(
- context.userName, statement.getPaths(), PrivilegeType.WRITE_SCHEMA);
+ context.getUsername(), statement.getPaths(),
PrivilegeType.WRITE_SCHEMA);
}
@Override
public TSStatus visitInternalBatchActivateTemplate(
InternalBatchActivateTemplateStatement statement, TreeAccessCheckContext
context) {
return checkTimeSeriesPermission(
- context.userName, statement.getPaths(), PrivilegeType.WRITE_SCHEMA);
+ context.getUsername(), statement.getPaths(),
PrivilegeType.WRITE_SCHEMA);
}
private TSStatus checkTemplateShowRelated(
ShowSchemaTemplateStatement statement, TreeAccessCheckContext context) {
- if (AuthorityChecker.SUPER_USER.equals(context.userName)) {
+ if (AuthorityChecker.SUPER_USER.equals(context.getUsername())) {
statement.setCanSeeAll(true);
return SUCCEED;
}
// own SYSTEM can see all, otherwise can only see PATHS that user has
READ_SCHEMA auth
- if (!AuthorityChecker.checkSystemPermission(context.userName,
PrivilegeType.SYSTEM)) {
+ if (!AuthorityChecker.checkSystemPermission(context.getUsername(),
PrivilegeType.SYSTEM)) {
statement.setCanSeeAll(false);
return visitAuthorityInformation(statement, context);
} else {
@@ -268,31 +268,31 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
public TSStatus visitDeactivateTemplate(
DeactivateTemplateStatement statement, TreeAccessCheckContext context) {
return checkTimeSeriesPermission(
- context.userName, statement.getPaths(), PrivilegeType.WRITE_SCHEMA);
+ context.getUsername(), statement.getPaths(),
PrivilegeType.WRITE_SCHEMA);
}
@Override
public TSStatus visitUnsetSchemaTemplate(
UnsetSchemaTemplateStatement unsetSchemaTemplateStatement,
TreeAccessCheckContext context) {
- return checkSystemAuth(context.userName);
+ return checkSystemAuth(context.getUsername());
}
@Override
public TSStatus visitDropSchemaTemplate(
DropSchemaTemplateStatement dropSchemaTemplateStatement,
TreeAccessCheckContext context) {
- return checkSystemAuth(context.userName);
+ return checkSystemAuth(context.getUsername());
}
@Override
public TSStatus visitAlterSchemaTemplate(
AlterSchemaTemplateStatement alterSchemaTemplateStatement,
TreeAccessCheckContext context) {
- if (AuthorityChecker.SUPER_USER.equals(context.userName)) {
+ if (AuthorityChecker.SUPER_USER.equals(context.getUsername())) {
return SUCCEED;
}
return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(context.userName,
PrivilegeType.SYSTEM)
+ AuthorityChecker.checkSystemPermission(context.getUsername(),
PrivilegeType.SYSTEM)
|| AuthorityChecker.checkSystemPermission(
- context.userName, PrivilegeType.EXTEND_TEMPLATE),
+ context.getUsername(), PrivilegeType.EXTEND_TEMPLATE),
PrivilegeType.SYSTEM);
}
@@ -311,20 +311,20 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
for (PartialPath path : paths) {
// audit db is read-only
if (includeByAuditTreeDB(path)
- && !context.userName.equals(AuthorityChecker.INTERNAL_AUDIT_USER)) {
+ &&
!context.getUsername().equals(AuthorityChecker.INTERNAL_AUDIT_USER)) {
return new TSStatus(TSStatusCode.NO_PERMISSION.getStatusCode())
.setMessage(String.format(READ_ONLY_DB_ERROR_MSG,
TREE_MODEL_AUDIT_DATABASE));
}
}
- if (AuthorityChecker.SUPER_USER.equals(context.userName)) {
+ if (AuthorityChecker.SUPER_USER.equals(context.getUsername())) {
statement.setCanSeeAuditDB(true);
if (statement.getQueryStatement() != null) {
statement.getQueryStatement().setCanSeeAuditDB(true);
}
return SUCCEED;
}
- if (!checkHasGlobalAuth(context.userName, PrivilegeType.AUDIT)) {
+ if (!checkHasGlobalAuth(context.getUsername(), PrivilegeType.AUDIT)) {
statement.setCanSeeAuditDB(false);
if (statement.getQueryStatement() != null) {
statement.getQueryStatement().setCanSeeAuditDB(false);
@@ -335,17 +335,19 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
List<PartialPath> sourcePathList = statement.getSourcePaths().fullPathList;
if (sourcePathList != null) {
status =
- checkTimeSeriesPermission(context.userName, sourcePathList,
PrivilegeType.READ_SCHEMA);
+ checkTimeSeriesPermission(
+ context.getUsername(), sourcePathList,
PrivilegeType.READ_SCHEMA);
}
QueryStatement queryStatement = statement.getQueryStatement();
if (queryStatement != null && status.getCode() ==
TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
sourcePathList = queryStatement.getPaths();
status =
- checkTimeSeriesPermission(context.userName, sourcePathList,
PrivilegeType.READ_SCHEMA);
+ checkTimeSeriesPermission(
+ context.getUsername(), sourcePathList,
PrivilegeType.READ_SCHEMA);
}
if (status.getCode() == TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
- return checkTimeSeriesPermission(context.userName, paths,
PrivilegeType.WRITE_SCHEMA);
+ return checkTimeSeriesPermission(context.getUsername(), paths,
PrivilegeType.WRITE_SCHEMA);
}
return status;
}
@@ -354,7 +356,7 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
public TSStatus visitDeleteLogicalView(
DeleteLogicalViewStatement statement, TreeAccessCheckContext context) {
return checkTimeSeriesPermission(
- context.userName, statement.getPaths(), PrivilegeType.WRITE_SCHEMA);
+ context.getUsername(), statement.getPaths(),
PrivilegeType.WRITE_SCHEMA);
}
@Override
@@ -366,14 +368,14 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
@Override
public TSStatus visitAlterLogicalView(
AlterLogicalViewStatement statement, TreeAccessCheckContext context) {
- if (AuthorityChecker.SUPER_USER.equals(context.userName)) {
+ if (AuthorityChecker.SUPER_USER.equals(context.getUsername())) {
statement.setCanSeeAuditDB(true);
if (statement.getQueryStatement() != null) {
statement.getQueryStatement().setCanSeeAuditDB(true);
}
return SUCCEED;
}
- if (!checkHasGlobalAuth(context.userName, PrivilegeType.AUDIT)) {
+ if (!checkHasGlobalAuth(context.getUsername(), PrivilegeType.AUDIT)) {
statement.setCanSeeAuditDB(false);
if (statement.getQueryStatement() != null) {
statement.getQueryStatement().setCanSeeAuditDB(false);
@@ -384,18 +386,20 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
List<PartialPath> sourcePathList = statement.getSourcePaths().fullPathList;
if (sourcePathList != null) {
status =
- checkTimeSeriesPermission(context.userName, sourcePathList,
PrivilegeType.READ_SCHEMA);
+ checkTimeSeriesPermission(
+ context.getUsername(), sourcePathList,
PrivilegeType.READ_SCHEMA);
}
QueryStatement queryStatement = statement.getQueryStatement();
if (queryStatement != null && status.getCode() ==
TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
sourcePathList = queryStatement.getPaths();
status =
- checkTimeSeriesPermission(context.userName, sourcePathList,
PrivilegeType.READ_SCHEMA);
+ checkTimeSeriesPermission(
+ context.getUsername(), sourcePathList,
PrivilegeType.READ_SCHEMA);
}
if (status.getCode() == TSStatusCode.SUCCESS_STATUS.getStatusCode()) {
return checkTimeSeriesPermission(
- context.userName, statement.getTargetPathList(),
PrivilegeType.WRITE_SCHEMA);
+ context.getUsername(), statement.getTargetPathList(),
PrivilegeType.WRITE_SCHEMA);
}
return status;
}
@@ -405,12 +409,12 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
RenameLogicalViewStatement statement, TreeAccessCheckContext context) {
// audit db is read-only
if (includeByAuditTreeDB(statement.getNewName())
- && !context.userName.equals(AuthorityChecker.INTERNAL_AUDIT_USER)) {
+ &&
!context.getUsername().equals(AuthorityChecker.INTERNAL_AUDIT_USER)) {
return new TSStatus(TSStatusCode.NO_PERMISSION.getStatusCode())
.setMessage(String.format(READ_ONLY_DB_ERROR_MSG,
TREE_MODEL_AUDIT_DATABASE));
}
return checkTimeSeriesPermission(
- context.userName,
+ context.getUsername(),
ImmutableList.of(statement.getOldName(), statement.getNewName()),
PrivilegeType.WRITE_SCHEMA);
}
@@ -422,63 +426,65 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
switch (authorType) {
case CREATE_USER:
case DROP_USER:
- return checkGlobalAuth(context.userName, PrivilegeType.MANAGE_USER);
+ return checkGlobalAuth(context.getUsername(),
PrivilegeType.MANAGE_USER);
case UPDATE_USER:
// users can change passwords of themselves
- if (statement.getUserName().equals(context.userName)) {
+ if (statement.getUserName().equals(context.getUsername())) {
return RpcUtils.SUCCESS_STATUS;
}
- return checkGlobalAuth(context.userName, PrivilegeType.MANAGE_USER);
+ return checkGlobalAuth(context.getUsername(),
PrivilegeType.MANAGE_USER);
case LIST_USER:
- if (checkHasGlobalAuth(context.userName, PrivilegeType.MANAGE_USER)) {
+ if (checkHasGlobalAuth(context.getUsername(),
PrivilegeType.MANAGE_USER)) {
return RpcUtils.SUCCESS_STATUS;
}
- statement.setUserName(context.userName);
+ statement.setUserName(context.getUsername());
return RpcUtils.SUCCESS_STATUS;
case LIST_USER_PRIVILEGE:
- if (context.userName.equals(statement.getUserName())) {
+ if (context.getUsername().equals(statement.getUserName())) {
return RpcUtils.SUCCESS_STATUS;
}
- return checkGlobalAuth(context.userName, PrivilegeType.MANAGE_USER);
+ return checkGlobalAuth(context.getUsername(),
PrivilegeType.MANAGE_USER);
case LIST_ROLE_PRIVILEGE:
- if (!AuthorityChecker.checkRole(context.userName,
statement.getRoleName())) {
- return checkGlobalAuth(context.userName, PrivilegeType.MANAGE_ROLE);
+ if (!AuthorityChecker.checkRole(context.getUsername(),
statement.getRoleName())) {
+ return checkGlobalAuth(context.getUsername(),
PrivilegeType.MANAGE_ROLE);
} else {
return SUCCEED;
}
case LIST_ROLE:
- if (AuthorityChecker.checkSystemPermission(context.userName,
PrivilegeType.MANAGE_ROLE)) {
+ if (AuthorityChecker.checkSystemPermission(
+ context.getUsername(), PrivilegeType.MANAGE_ROLE)) {
return SUCCEED;
}
// list roles of other user is not allowed
- if (statement.getUserName() != null &&
!statement.getUserName().equals(context.userName)) {
+ if (statement.getUserName() != null
+ && !statement.getUserName().equals(context.getUsername())) {
return AuthorityChecker.getTSStatus(false,
PrivilegeType.MANAGE_ROLE);
}
- statement.setUserName(context.userName);
+ statement.setUserName(context.getUsername());
return RpcUtils.SUCCESS_STATUS;
case CREATE_ROLE:
case DROP_ROLE:
case GRANT_USER_ROLE:
case REVOKE_USER_ROLE:
- return checkGlobalAuth(context.userName, PrivilegeType.MANAGE_ROLE);
+ return checkGlobalAuth(context.getUsername(),
PrivilegeType.MANAGE_ROLE);
case REVOKE_USER:
case GRANT_USER:
case GRANT_ROLE:
case REVOKE_ROLE:
- if (checkHasGlobalAuth(context.userName, PrivilegeType.SECURITY)) {
+ if (checkHasGlobalAuth(context.getUsername(), PrivilegeType.SECURITY))
{
return RpcUtils.SUCCESS_STATUS;
}
for (String s : statement.getPrivilegeList()) {
PrivilegeType privilegeType = PrivilegeType.valueOf(s.toUpperCase());
if (privilegeType.isSystemPrivilege()) {
- if (!checkHasGlobalAuth(context.userName, privilegeType)) {
+ if (!checkHasGlobalAuth(context.getUsername(), privilegeType)) {
return AuthorityChecker.getTSStatus(
false,
"Has no permission to execute "
@@ -487,7 +493,7 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
}
} else if (privilegeType.isPathPrivilege()) {
if (!AuthorityChecker.checkPathPermissionGrantOption(
- context.userName, privilegeType, statement.getNodeNameList()))
{
+ context.getUsername(), privilegeType,
statement.getNodeNameList())) {
return AuthorityChecker.getTSStatus(
false,
"Has no permission to execute "
@@ -509,19 +515,19 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
@Override
public TSStatus visitCreateContinuousQuery(
CreateContinuousQueryStatement statement, TreeAccessCheckContext
context) {
- return checkCQManagement(context.userName);
+ return checkCQManagement(context.getUsername());
}
@Override
public TSStatus visitDropContinuousQuery(
DropContinuousQueryStatement statement, TreeAccessCheckContext context) {
- return checkCQManagement(context.userName);
+ return checkCQManagement(context.getUsername());
}
@Override
public TSStatus visitShowContinuousQueries(
ShowContinuousQueriesStatement statement, TreeAccessCheckContext
context) {
- return checkCQManagement(context.userName);
+ return checkCQManagement(context.getUsername());
}
private TSStatus checkCQManagement(String userName) {
@@ -535,13 +541,13 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
@Override
public TSStatus visitCreateFunction(
CreateFunctionStatement statement, TreeAccessCheckContext context) {
- return checkUDFManagement(context.userName);
+ return checkUDFManagement(context.getUsername());
}
@Override
public TSStatus visitDropFunction(
DropFunctionStatement statement, TreeAccessCheckContext context) {
- return checkUDFManagement(context.userName);
+ return checkUDFManagement(context.getUsername());
}
@Override
@@ -558,12 +564,12 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
// =================================== model related
====================================
@Override
public TSStatus visitCreateModel(CreateModelStatement statement,
TreeAccessCheckContext context) {
- return checkModelManagement(context.userName);
+ return checkModelManagement(context.getUsername());
}
@Override
public TSStatus visitDropModel(DropModelStatement statement,
TreeAccessCheckContext context) {
- return checkModelManagement(context.userName);
+ return checkModelManagement(context.getUsername());
}
@Override
@@ -579,51 +585,51 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
@Override
public TSStatus visitCreatePipePlugin(
CreatePipePluginStatement statement, TreeAccessCheckContext context) {
- return checkPipeManagement(context.userName);
+ return checkPipeManagement(context.getUsername());
}
@Override
public TSStatus visitDropPipePlugin(
DropPipePluginStatement statement, TreeAccessCheckContext context) {
- return checkPipeManagement(context.userName);
+ return checkPipeManagement(context.getUsername());
}
@Override
public TSStatus visitShowPipePlugins(
ShowPipePluginsStatement statement, TreeAccessCheckContext context) {
- return checkPipeManagement(context.userName);
+ return checkPipeManagement(context.getUsername());
}
// =============================== pipe related
========================================
@Override
public TSStatus visitCreatePipe(CreatePipeStatement statement,
TreeAccessCheckContext context) {
- return checkPipeManagement(context.userName);
+ return checkPipeManagement(context.getUsername());
}
@Override
public TSStatus visitShowPipes(ShowPipesStatement statement,
TreeAccessCheckContext context) {
- return checkPipeManagement(context.userName);
+ return checkPipeManagement(context.getUsername());
}
@Override
public TSStatus visitDropPipe(DropPipeStatement statement,
TreeAccessCheckContext context) {
- return checkPipeManagement(context.userName);
+ return checkPipeManagement(context.getUsername());
}
@Override
public TSStatus visitAlterPipe(AlterPipeStatement statement,
TreeAccessCheckContext context) {
- return checkPipeManagement(context.userName);
+ return checkPipeManagement(context.getUsername());
}
@Override
public TSStatus visitStartPipe(StartPipeStatement statement,
TreeAccessCheckContext context) {
- return checkPipeManagement(context.userName);
+ return checkPipeManagement(context.getUsername());
}
@Override
public TSStatus visitStopPipe(StopPipeStatement statement,
TreeAccessCheckContext context) {
- return checkPipeManagement(context.userName);
+ return checkPipeManagement(context.getUsername());
}
private TSStatus checkPipeManagement(String userName) {
@@ -634,29 +640,29 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
@Override
public TSStatus visitCreateTopic(CreateTopicStatement statement,
TreeAccessCheckContext context) {
- return checkPipeManagement(context.userName);
+ return checkPipeManagement(context.getUsername());
}
@Override
public TSStatus visitShowTopics(ShowTopicsStatement statement,
TreeAccessCheckContext context) {
- return checkPipeManagement(context.userName);
+ return checkPipeManagement(context.getUsername());
}
@Override
public TSStatus visitDropTopic(DropTopicStatement statement,
TreeAccessCheckContext context) {
- return checkPipeManagement(context.userName);
+ return checkPipeManagement(context.getUsername());
}
@Override
public TSStatus visitShowSubscriptions(
ShowSubscriptionsStatement statement, TreeAccessCheckContext context) {
- return checkPipeManagement(context.userName);
+ return checkPipeManagement(context.getUsername());
}
@Override
public TSStatus visitDropSubscription(
DropSubscriptionStatement statement, TreeAccessCheckContext context) {
- return checkPipeManagement(context.userName);
+ return checkPipeManagement(context.getUsername());
}
// ======================= trigger related ================================
@@ -667,18 +673,18 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
return new TSStatus(TSStatusCode.NO_PERMISSION.getStatusCode())
.setMessage(String.format(READ_ONLY_DB_ERROR_MSG,
TREE_MODEL_AUDIT_DATABASE));
}
- return checkTriggerManagement(context.userName);
+ return checkTriggerManagement(context.getUsername());
}
@Override
public TSStatus visitDropTrigger(DropTriggerStatement statement,
TreeAccessCheckContext context) {
- return checkTriggerManagement(context.userName);
+ return checkTriggerManagement(context.getUsername());
}
@Override
public TSStatus visitShowTriggers(
ShowTriggersStatement statement, TreeAccessCheckContext context) {
- return checkTriggerManagement(context.userName);
+ return checkTriggerManagement(context.getUsername());
}
private TSStatus checkTriggerManagement(String userName) {
@@ -695,33 +701,33 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
@Override
public TSStatus visitSetDatabase(
DatabaseSchemaStatement statement, TreeAccessCheckContext context) {
- return checkCreateOrAlterDatabasePermission(context.userName,
statement.getDatabasePath());
+ return checkCreateOrAlterDatabasePermission(context.getUsername(),
statement.getDatabasePath());
}
@Override
public TSStatus visitAlterDatabase(
DatabaseSchemaStatement databaseSchemaStatement, TreeAccessCheckContext
context) {
return checkCreateOrAlterDatabasePermission(
- context.userName, databaseSchemaStatement.getDatabasePath());
+ context.getUsername(), databaseSchemaStatement.getDatabasePath());
}
@Override
public TSStatus visitShowStorageGroup(
ShowDatabaseStatement showDatabaseStatement, TreeAccessCheckContext
context) {
- if (AuthorityChecker.SUPER_USER.equals(context.userName)) {
+ if (AuthorityChecker.SUPER_USER.equals(context.getUsername())) {
return SUCCEED;
}
- setCanSeeAuditDB(showDatabaseStatement, context.userName);
+ setCanSeeAuditDB(showDatabaseStatement, context.getUsername());
return checkShowOrCountDatabasePermission(showDatabaseStatement, context);
}
@Override
public TSStatus visitCountStorageGroup(
CountDatabaseStatement countDatabaseStatement, TreeAccessCheckContext
context) {
- if (AuthorityChecker.SUPER_USER.equals(context.userName)) {
+ if (AuthorityChecker.SUPER_USER.equals(context.getUsername())) {
return SUCCEED;
}
- setCanSeeAuditDB(countDatabaseStatement, context.userName);
+ setCanSeeAuditDB(countDatabaseStatement, context.getUsername());
return checkShowOrCountDatabasePermission(countDatabaseStatement, context);
}
@@ -735,13 +741,13 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
.setMessage(String.format(READ_ONLY_DB_ERROR_MSG,
TREE_MODEL_AUDIT_DATABASE));
}
}
- if (AuthorityChecker.SUPER_USER.equals(context.userName)) {
+ if (AuthorityChecker.SUPER_USER.equals(context.getUsername())) {
return SUCCEED;
}
return AuthorityChecker.getTSStatus(
- AuthorityChecker.checkSystemPermission(context.userName,
PrivilegeType.SYSTEM)
+ AuthorityChecker.checkSystemPermission(context.getUsername(),
PrivilegeType.SYSTEM)
|| AuthorityChecker.checkSystemPermission(
- context.userName, PrivilegeType.MANAGE_DATABASE),
+ context.getUsername(), PrivilegeType.MANAGE_DATABASE),
PrivilegeType.SYSTEM);
}
@@ -766,7 +772,7 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
AuthorityInformationStatement statement, TreeAccessCheckContext context)
{
// own SYSTEM/MAINTAIN can see all except for root.__audit, otherwise can
only see PATHS that
// user has READ_SCHEMA auth
- if (!checkHasGlobalAuth(context.userName, PrivilegeType.MANAGE_DATABASE)) {
+ if (!checkHasGlobalAuth(context.getUsername(),
PrivilegeType.MANAGE_DATABASE)) {
return visitAuthorityInformation(statement, context);
} else {
return SUCCEED;
@@ -780,17 +786,17 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
for (PartialPath path : statement.getDevicePaths()) {
// audit db is read-only
if (includeByAuditTreeDB(path)
- && !context.userName.equals(AuthorityChecker.INTERNAL_AUDIT_USER)) {
+ &&
!context.getUsername().equals(AuthorityChecker.INTERNAL_AUDIT_USER)) {
return new TSStatus(TSStatusCode.NO_PERMISSION.getStatusCode())
.setMessage(String.format(READ_ONLY_DB_ERROR_MSG,
TREE_MODEL_AUDIT_DATABASE));
}
}
- if (AuthorityChecker.SUPER_USER.equals(context.userName)) {
+ if (AuthorityChecker.SUPER_USER.equals(context.getUsername())) {
return SUCCEED;
}
return checkTimeSeriesPermission(
- context.userName,
+ context.getUsername(),
statement.getPaths().stream().distinct().collect(Collectors.toList()),
PrivilegeType.WRITE_DATA);
}
@@ -799,12 +805,12 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
public TSStatus visitInsert(InsertStatement statement,
TreeAccessCheckContext context) {
// audit db is read-only
if (includeByAuditTreeDB(statement.getDevice())
- && !context.userName.equals(AuthorityChecker.INTERNAL_AUDIT_USER)) {
+ &&
!context.getUsername().equals(AuthorityChecker.INTERNAL_AUDIT_USER)) {
return new TSStatus(TSStatusCode.NO_PERMISSION.getStatusCode())
.setMessage(String.format(READ_ONLY_DB_ERROR_MSG,
TREE_MODEL_AUDIT_DATABASE));
}
return checkTimeSeriesPermission(
- context.userName, statement.getPaths(), PrivilegeType.WRITE_DATA);
+ context.getUsername(), statement.getPaths(), PrivilegeType.WRITE_DATA);
}
@Override
@@ -818,25 +824,25 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
for (PartialPath path : statement.getPaths()) {
// audit db is read-only
if (includeByAuditTreeDB(path)
- && !context.userName.equals(AuthorityChecker.INTERNAL_AUDIT_USER)) {
+ &&
!context.getUsername().equals(AuthorityChecker.INTERNAL_AUDIT_USER)) {
return new TSStatus(TSStatusCode.NO_PERMISSION.getStatusCode())
.setMessage(String.format(READ_ONLY_DB_ERROR_MSG,
TREE_MODEL_AUDIT_DATABASE));
}
}
return checkTimeSeriesPermission(
- context.userName, statement.getPaths(), PrivilegeType.WRITE_DATA);
+ context.getUsername(), statement.getPaths(), PrivilegeType.WRITE_DATA);
}
@Override
public TSStatus visitQuery(QueryStatement statement, TreeAccessCheckContext
context) {
- if (AuthorityChecker.SUPER_USER.equals(context.userName)) {
+ if (AuthorityChecker.SUPER_USER.equals(context.getUsername())) {
statement.setCanSeeAuditDB(true);
return SUCCEED;
}
- setCanSeeAuditDB(statement, context.userName);
+ setCanSeeAuditDB(statement, context.getUsername());
try {
statement.setAuthorityScope(
- AuthorityChecker.getAuthorizedPathTree(context.userName,
PrivilegeType.READ_DATA));
+ AuthorityChecker.getAuthorizedPathTree(context.getUsername(),
PrivilegeType.READ_DATA));
} catch (AuthException e) {
return new TSStatus(e.getCode().getStatusCode());
}
@@ -866,12 +872,12 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
CreateTimeSeriesStatement statement, TreeAccessCheckContext context) {
// audit db is read-only
if (includeByAuditTreeDB(statement.getPath())
- && !context.userName.equals(AuthorityChecker.INTERNAL_AUDIT_USER)) {
+ &&
!context.getUsername().equals(AuthorityChecker.INTERNAL_AUDIT_USER)) {
return new TSStatus(TSStatusCode.NO_PERMISSION.getStatusCode())
.setMessage(String.format(READ_ONLY_DB_ERROR_MSG,
TREE_MODEL_AUDIT_DATABASE));
}
return checkTimeSeriesPermission(
- context.userName, statement.getPaths(), PrivilegeType.WRITE_SCHEMA);
+ context.getUsername(), statement.getPaths(),
PrivilegeType.WRITE_SCHEMA);
}
@Override
@@ -879,12 +885,12 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
CreateAlignedTimeSeriesStatement statement, TreeAccessCheckContext
context) {
// audit db is read-only
if (includeByAuditTreeDB(statement.getDevicePath())
- && !context.userName.equals(AuthorityChecker.INTERNAL_AUDIT_USER)) {
+ &&
!context.getUsername().equals(AuthorityChecker.INTERNAL_AUDIT_USER)) {
return new TSStatus(TSStatusCode.NO_PERMISSION.getStatusCode())
.setMessage(String.format(READ_ONLY_DB_ERROR_MSG,
TREE_MODEL_AUDIT_DATABASE));
}
return checkTimeSeriesPermission(
- context.userName, statement.getPaths(), PrivilegeType.WRITE_SCHEMA);
+ context.getUsername(), statement.getPaths(),
PrivilegeType.WRITE_SCHEMA);
}
@Override
@@ -893,14 +899,14 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
// audit db is read-only
for (PartialPath path : statement.getPaths()) {
if (includeByAuditTreeDB(path)
- && !context.userName.equals(AuthorityChecker.INTERNAL_AUDIT_USER)) {
+ &&
!context.getUsername().equals(AuthorityChecker.INTERNAL_AUDIT_USER)) {
return new TSStatus(TSStatusCode.NO_PERMISSION.getStatusCode())
.setMessage(String.format(READ_ONLY_DB_ERROR_MSG,
TREE_MODEL_AUDIT_DATABASE));
}
}
return checkTimeSeriesPermission(
- context.userName, statement.getPaths(), PrivilegeType.WRITE_SCHEMA);
+ context.getUsername(), statement.getPaths(),
PrivilegeType.WRITE_SCHEMA);
}
@Override
@@ -909,13 +915,13 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
// audit db is read-only
for (PartialPath path : statement.getDeviceMap().keySet()) {
if (includeByAuditTreeDB(path)
- && !context.userName.equals(AuthorityChecker.INTERNAL_AUDIT_USER)) {
+ &&
!context.getUsername().equals(AuthorityChecker.INTERNAL_AUDIT_USER)) {
return new TSStatus(TSStatusCode.NO_PERMISSION.getStatusCode())
.setMessage(String.format(READ_ONLY_DB_ERROR_MSG,
TREE_MODEL_AUDIT_DATABASE));
}
}
return checkTimeSeriesPermission(
- context.userName, statement.getPaths(), PrivilegeType.WRITE_SCHEMA);
+ context.getUsername(), statement.getPaths(),
PrivilegeType.WRITE_SCHEMA);
}
@Override
@@ -923,28 +929,30 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
InternalCreateTimeSeriesStatement statement, TreeAccessCheckContext
context) {
// audit db is read-only
if (includeByAuditTreeDB(statement.getDevicePath())
- && !context.userName.equals(AuthorityChecker.INTERNAL_AUDIT_USER)) {
+ &&
!context.getUsername().equals(AuthorityChecker.INTERNAL_AUDIT_USER)) {
return new TSStatus(TSStatusCode.NO_PERMISSION.getStatusCode())
.setMessage(String.format(READ_ONLY_DB_ERROR_MSG,
TREE_MODEL_AUDIT_DATABASE));
}
return checkTimeSeriesPermission(
- context.userName, statement.getPaths(), PrivilegeType.WRITE_SCHEMA);
+ context.getUsername(), statement.getPaths(),
PrivilegeType.WRITE_SCHEMA);
}
@Override
public TSStatus visitShowTimeSeries(
ShowTimeSeriesStatement statement, TreeAccessCheckContext context) {
- if (AuthorityChecker.SUPER_USER.equals(context.userName)) {
+ if (AuthorityChecker.SUPER_USER.equals(context.getUsername())) {
statement.setCanSeeAuditDB(true);
return SUCCEED;
}
- setCanSeeAuditDB(statement, context.userName);
+ setCanSeeAuditDB(statement, context.getUsername());
if (statement.hasTimeCondition()) {
try {
statement.setAuthorityScope(
PathPatternTreeUtils.intersectWithFullPathPrefixTree(
- AuthorityChecker.getAuthorizedPathTree(context.userName,
PrivilegeType.READ_SCHEMA),
- AuthorityChecker.getAuthorizedPathTree(context.userName,
PrivilegeType.READ_DATA)));
+ AuthorityChecker.getAuthorizedPathTree(
+ context.getUsername(), PrivilegeType.READ_SCHEMA),
+ AuthorityChecker.getAuthorizedPathTree(
+ context.getUsername(), PrivilegeType.READ_DATA)));
} catch (AuthException e) {
return new TSStatus(e.getCode().getStatusCode());
}
@@ -957,17 +965,19 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
@Override
public TSStatus visitCountTimeSeries(
CountTimeSeriesStatement statement, TreeAccessCheckContext context) {
- if (AuthorityChecker.SUPER_USER.equals(context.userName)) {
+ if (AuthorityChecker.SUPER_USER.equals(context.getUsername())) {
statement.setCanSeeAuditDB(true);
return SUCCEED;
}
- setCanSeeAuditDB(statement, context.userName);
+ setCanSeeAuditDB(statement, context.getUsername());
if (statement.hasTimeCondition()) {
try {
statement.setAuthorityScope(
PathPatternTreeUtils.intersectWithFullPathPrefixTree(
- AuthorityChecker.getAuthorizedPathTree(context.userName,
PrivilegeType.READ_SCHEMA),
- AuthorityChecker.getAuthorizedPathTree(context.userName,
PrivilegeType.READ_DATA)));
+ AuthorityChecker.getAuthorizedPathTree(
+ context.getUsername(), PrivilegeType.READ_SCHEMA),
+ AuthorityChecker.getAuthorizedPathTree(
+ context.getUsername(), PrivilegeType.READ_DATA)));
} catch (AuthException e) {
return new TSStatus(e.getCode().getStatusCode());
}
@@ -980,44 +990,44 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
@Override
public TSStatus visitCountLevelTimeSeries(
CountLevelTimeSeriesStatement countStatement, TreeAccessCheckContext
context) {
- if (AuthorityChecker.SUPER_USER.equals(context.userName)) {
+ if (AuthorityChecker.SUPER_USER.equals(context.getUsername())) {
countStatement.setCanSeeAuditDB(true);
return SUCCEED;
}
- setCanSeeAuditDB(countStatement, context.userName);
+ setCanSeeAuditDB(countStatement, context.getUsername());
return visitAuthorityInformation(countStatement, context);
}
@Override
public TSStatus visitCountNodes(
CountNodesStatement countStatement, TreeAccessCheckContext context) {
- if (AuthorityChecker.SUPER_USER.equals(context.userName)) {
+ if (AuthorityChecker.SUPER_USER.equals(context.getUsername())) {
countStatement.setCanSeeAuditDB(true);
return SUCCEED;
}
- setCanSeeAuditDB(countStatement, context.userName);
+ setCanSeeAuditDB(countStatement, context.getUsername());
return visitAuthorityInformation(countStatement, context);
}
@Override
public TSStatus visitShowChildNodes(
ShowChildNodesStatement showChildNodesStatement, TreeAccessCheckContext
context) {
- if (AuthorityChecker.SUPER_USER.equals(context.userName)) {
+ if (AuthorityChecker.SUPER_USER.equals(context.getUsername())) {
showChildNodesStatement.setCanSeeAuditDB(true);
return SUCCEED;
}
- setCanSeeAuditDB(showChildNodesStatement, context.userName);
+ setCanSeeAuditDB(showChildNodesStatement, context.getUsername());
return visitAuthorityInformation(showChildNodesStatement, context);
}
@Override
public TSStatus visitShowChildPaths(
ShowChildPathsStatement showChildPathsStatement, TreeAccessCheckContext
context) {
- if (AuthorityChecker.SUPER_USER.equals(context.userName)) {
+ if (AuthorityChecker.SUPER_USER.equals(context.getUsername())) {
showChildPathsStatement.setCanSeeAuditDB(true);
return SUCCEED;
}
- setCanSeeAuditDB(showChildPathsStatement, context.userName);
+ setCanSeeAuditDB(showChildPathsStatement, context.getUsername());
return visitAuthorityInformation(showChildPathsStatement, context);
}
@@ -1026,12 +1036,12 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
AlterTimeSeriesStatement statement, TreeAccessCheckContext context) {
// audit db is read-only
if (includeByAuditTreeDB(statement.getPath())
- && !context.userName.equals(AuthorityChecker.INTERNAL_AUDIT_USER)) {
+ &&
!context.getUsername().equals(AuthorityChecker.INTERNAL_AUDIT_USER)) {
return new TSStatus(TSStatusCode.NO_PERMISSION.getStatusCode())
.setMessage(String.format(READ_ONLY_DB_ERROR_MSG,
TREE_MODEL_AUDIT_DATABASE));
}
return checkTimeSeriesPermission(
- context.userName, statement.getPaths(), PrivilegeType.WRITE_SCHEMA);
+ context.getUsername(), statement.getPaths(),
PrivilegeType.WRITE_SCHEMA);
}
@Override
@@ -1040,56 +1050,56 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
// audit db is read-only
for (PartialPath path : statement.getPathPatternList()) {
if (includeByAuditTreeDB(path)
- && !context.userName.equals(AuthorityChecker.INTERNAL_AUDIT_USER)) {
+ &&
!context.getUsername().equals(AuthorityChecker.INTERNAL_AUDIT_USER)) {
return new TSStatus(TSStatusCode.NO_PERMISSION.getStatusCode())
.setMessage(String.format(READ_ONLY_DB_ERROR_MSG,
TREE_MODEL_AUDIT_DATABASE));
}
}
return checkTimeSeriesPermission(
- context.userName, statement.getPaths(), PrivilegeType.WRITE_SCHEMA);
+ context.getUsername(), statement.getPaths(),
PrivilegeType.WRITE_SCHEMA);
}
// ================================== maintain related
=============================
@Override
public TSStatus visitExtendRegion(
ExtendRegionStatement statement, TreeAccessCheckContext context) {
- return checkGlobalAuth(context.userName, PrivilegeType.MAINTAIN);
+ return checkGlobalAuth(context.getUsername(), PrivilegeType.MAINTAIN);
}
@Override
public TSStatus visitGetRegionId(GetRegionIdStatement statement,
TreeAccessCheckContext context) {
- return checkGlobalAuth(context.userName, PrivilegeType.MAINTAIN);
+ return checkGlobalAuth(context.getUsername(), PrivilegeType.MAINTAIN);
}
@Override
public TSStatus visitGetSeriesSlotList(
GetSeriesSlotListStatement statement, TreeAccessCheckContext context) {
- return checkGlobalAuth(context.userName, PrivilegeType.MAINTAIN);
+ return checkGlobalAuth(context.getUsername(), PrivilegeType.MAINTAIN);
}
@Override
public TSStatus visitGetTimeSlotList(
GetTimeSlotListStatement statement, TreeAccessCheckContext context) {
- return checkGlobalAuth(context.userName, PrivilegeType.MAINTAIN);
+ return checkGlobalAuth(context.getUsername(), PrivilegeType.MAINTAIN);
}
@Override
public TSStatus visitCountTimeSlotList(
CountTimeSlotListStatement statement, TreeAccessCheckContext context) {
- return checkGlobalAuth(context.userName, PrivilegeType.MAINTAIN);
+ return checkGlobalAuth(context.getUsername(), PrivilegeType.MAINTAIN);
}
@Override
public TSStatus visitKillQuery(KillQueryStatement statement,
TreeAccessCheckContext context) {
- if (checkHasGlobalAuth(context.userName, PrivilegeType.MAINTAIN)) {
- statement.setAllowedUsername(context.userName);
+ if (checkHasGlobalAuth(context.getUsername(), PrivilegeType.MAINTAIN)) {
+ statement.setAllowedUsername(context.getUsername());
}
return SUCCEED;
}
@Override
public TSStatus visitFlush(FlushStatement flushStatement,
TreeAccessCheckContext context) {
- return checkGlobalAuth(context.userName, PrivilegeType.SYSTEM);
+ return checkGlobalAuth(context.getUsername(), PrivilegeType.SYSTEM);
}
@Override
@@ -1098,7 +1108,7 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
try {
return AuthorityChecker.getTSStatus(
AuthorityChecker.checkUserMissingSystemPermissions(
- context.userName,
setConfigurationStatement.getNeededPrivileges()));
+ context.getUsername(),
setConfigurationStatement.getNeededPrivileges()));
} catch (IOException e) {
return AuthorityChecker.getTSStatus(false, "Failed to check config item
permission");
}
@@ -1107,61 +1117,61 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
@Override
public TSStatus visitSetSystemStatus(
SetSystemStatusStatement setSystemStatusStatement,
TreeAccessCheckContext context) {
- return checkGlobalAuth(context.userName, PrivilegeType.SYSTEM);
+ return checkGlobalAuth(context.getUsername(), PrivilegeType.SYSTEM);
}
@Override
public TSStatus visitStartRepairData(
StartRepairDataStatement startRepairDataStatement,
TreeAccessCheckContext context) {
- return checkGlobalAuth(context.userName, PrivilegeType.SYSTEM);
+ return checkGlobalAuth(context.getUsername(), PrivilegeType.SYSTEM);
}
@Override
public TSStatus visitStopRepairData(
StopRepairDataStatement stopRepairDataStatement, TreeAccessCheckContext
context) {
- return checkGlobalAuth(context.userName, PrivilegeType.SYSTEM);
+ return checkGlobalAuth(context.getUsername(), PrivilegeType.SYSTEM);
}
@Override
public TSStatus visitClearCache(
ClearCacheStatement clearCacheStatement, TreeAccessCheckContext context)
{
- return checkGlobalAuth(context.userName, PrivilegeType.SYSTEM);
+ return checkGlobalAuth(context.getUsername(), PrivilegeType.SYSTEM);
}
@Override
public TSStatus visitMigrateRegion(
MigrateRegionStatement statement, TreeAccessCheckContext context) {
- return checkGlobalAuth(context.userName, PrivilegeType.MAINTAIN);
+ return checkGlobalAuth(context.getUsername(), PrivilegeType.MAINTAIN);
}
@Override
public TSStatus visitReconstructRegion(
ReconstructRegionStatement statement, TreeAccessCheckContext context) {
- return checkGlobalAuth(context.userName, PrivilegeType.MAINTAIN);
+ return checkGlobalAuth(context.getUsername(), PrivilegeType.MAINTAIN);
}
@Override
public TSStatus visitRemoveAINode(
RemoveAINodeStatement statement, TreeAccessCheckContext context) {
- return checkGlobalAuth(context.userName, PrivilegeType.MAINTAIN);
+ return checkGlobalAuth(context.getUsername(), PrivilegeType.MAINTAIN);
}
@Override
public TSStatus visitRemoveConfigNode(
RemoveConfigNodeStatement statement, TreeAccessCheckContext context) {
- return checkGlobalAuth(context.userName, PrivilegeType.MAINTAIN);
+ return checkGlobalAuth(context.getUsername(), PrivilegeType.MAINTAIN);
}
@Override
public TSStatus visitRemoveDataNode(
RemoveDataNodeStatement statement, TreeAccessCheckContext context) {
- return checkGlobalAuth(context.userName, PrivilegeType.MAINTAIN);
+ return checkGlobalAuth(context.getUsername(), PrivilegeType.MAINTAIN);
}
@Override
public TSStatus visitRemoveRegion(
RemoveRegionStatement statement, TreeAccessCheckContext context) {
- return checkGlobalAuth(context.userName, PrivilegeType.MAINTAIN);
+ return checkGlobalAuth(context.getUsername(), PrivilegeType.MAINTAIN);
}
@Override
@@ -1172,24 +1182,24 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
@Override
public TSStatus visitShowAINodes(ShowAINodesStatement statement,
TreeAccessCheckContext context) {
- return checkGlobalAuth(context.userName, PrivilegeType.MAINTAIN);
+ return checkGlobalAuth(context.getUsername(), PrivilegeType.MAINTAIN);
}
@Override
public TSStatus visitShowClusterId(
ShowClusterIdStatement statement, TreeAccessCheckContext context) {
- return checkGlobalAuth(context.userName, PrivilegeType.MAINTAIN);
+ return checkGlobalAuth(context.getUsername(), PrivilegeType.MAINTAIN);
}
@Override
public TSStatus visitShowCluster(ShowClusterStatement statement,
TreeAccessCheckContext context) {
- return checkGlobalAuth(context.userName, PrivilegeType.MAINTAIN);
+ return checkGlobalAuth(context.getUsername(), PrivilegeType.MAINTAIN);
}
@Override
public TSStatus visitShowConfigNodes(
ShowConfigNodesStatement statement, TreeAccessCheckContext context) {
- return checkGlobalAuth(context.userName, PrivilegeType.MAINTAIN);
+ return checkGlobalAuth(context.getUsername(), PrivilegeType.MAINTAIN);
}
@Override
@@ -1207,61 +1217,61 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
@Override
public TSStatus visitShowDataNodes(
ShowDataNodesStatement statement, TreeAccessCheckContext context) {
- return checkGlobalAuth(context.userName, PrivilegeType.MAINTAIN);
+ return checkGlobalAuth(context.getUsername(), PrivilegeType.MAINTAIN);
}
@Override
public TSStatus visitShowQueries(ShowQueriesStatement statement,
TreeAccessCheckContext context) {
- if (checkHasGlobalAuth(context.userName, PrivilegeType.MAINTAIN)) {
- statement.setAllowedUsername(context.userName);
+ if (checkHasGlobalAuth(context.getUsername(), PrivilegeType.MAINTAIN)) {
+ statement.setAllowedUsername(context.getUsername());
}
return SUCCEED;
}
@Override
public TSStatus visitShowRegion(ShowRegionStatement statement,
TreeAccessCheckContext context) {
- return checkGlobalAuth(context.userName, PrivilegeType.MAINTAIN);
+ return checkGlobalAuth(context.getUsername(), PrivilegeType.MAINTAIN);
}
@Override
public TSStatus visitSetSpaceQuota(
SetSpaceQuotaStatement setSpaceQuotaStatement, TreeAccessCheckContext
context) {
- return checkGlobalAuth(context.userName, PrivilegeType.SYSTEM);
+ return checkGlobalAuth(context.getUsername(), PrivilegeType.SYSTEM);
}
@Override
public TSStatus visitSetThrottleQuota(
SetThrottleQuotaStatement setThrottleQuotaStatement,
TreeAccessCheckContext context) {
- return checkGlobalAuth(context.userName, PrivilegeType.SYSTEM);
+ return checkGlobalAuth(context.getUsername(), PrivilegeType.SYSTEM);
}
@Override
public TSStatus visitShowThrottleQuota(
ShowThrottleQuotaStatement showThrottleQuotaStatement,
TreeAccessCheckContext context) {
- return checkGlobalAuth(context.userName, PrivilegeType.SYSTEM);
+ return checkGlobalAuth(context.getUsername(), PrivilegeType.SYSTEM);
}
@Override
public TSStatus visitShowSpaceQuota(
ShowSpaceQuotaStatement showSpaceQuotaStatement, TreeAccessCheckContext
context) {
- return checkGlobalAuth(context.userName, PrivilegeType.SYSTEM);
+ return checkGlobalAuth(context.getUsername(), PrivilegeType.SYSTEM);
}
@Override
public TSStatus visitShowVariables(
ShowVariablesStatement statement, TreeAccessCheckContext context) {
- return checkGlobalAuth(context.userName, PrivilegeType.MAINTAIN);
+ return checkGlobalAuth(context.getUsername(), PrivilegeType.MAINTAIN);
}
@Override
public TSStatus visitShowVersion(ShowVersionStatement statement,
TreeAccessCheckContext context) {
- return checkGlobalAuth(context.userName, PrivilegeType.MAINTAIN);
+ return checkGlobalAuth(context.getUsername(), PrivilegeType.MAINTAIN);
}
@Override
public TSStatus visitTestConnection(
TestConnectionStatement statement, TreeAccessCheckContext context) {
- return checkGlobalAuth(context.userName, PrivilegeType.MAINTAIN);
+ return checkGlobalAuth(context.getUsername(), PrivilegeType.MAINTAIN);
}
@Override
@@ -1289,7 +1299,7 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
pathsNotEndWithMultiLevelWildcard[i] = true;
}
}
- if (checkHasGlobalAuth(context.userName, PrivilegeType.SYSTEM)) {
+ if (checkHasGlobalAuth(context.getUsername(), PrivilegeType.SYSTEM)) {
return SUCCEED;
}
@@ -1308,14 +1318,14 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
}
return AuthorityChecker.getTSStatus(
AuthorityChecker.checkFullPathOrPatternListPermission(
- context.userName, pathsForCheckingPermissions,
PrivilegeType.WRITE_SCHEMA),
+ context.getUsername(), pathsForCheckingPermissions,
PrivilegeType.WRITE_SCHEMA),
pathsForCheckingPermissions,
PrivilegeType.WRITE_SCHEMA);
}
@Override
public TSStatus visitShowTTL(ShowTTLStatement showTTLStatement,
TreeAccessCheckContext context) {
- if (checkHasGlobalAuth(context.userName, PrivilegeType.SYSTEM)) {
+ if (checkHasGlobalAuth(context.getUsername(), PrivilegeType.SYSTEM)) {
return SUCCEED;
}
for (PartialPath path : showTTLStatement.getPaths()) {
@@ -1323,7 +1333,7 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
continue;
}
if (!AuthorityChecker.checkFullPathOrPatternPermission(
- context.userName,
+ context.getUsername(),
path.concatNode(IoTDBConstant.MULTI_LEVEL_PATH_WILDCARD),
PrivilegeType.READ_SCHEMA)) {
return AuthorityChecker.getTSStatus(false, path,
PrivilegeType.READ_SCHEMA);
@@ -1341,17 +1351,19 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
// ================================= device related
=============================
@Override
public TSStatus visitShowDevices(ShowDevicesStatement statement,
TreeAccessCheckContext context) {
- if (AuthorityChecker.SUPER_USER.equals(context.userName)) {
+ if (AuthorityChecker.SUPER_USER.equals(context.getUsername())) {
statement.setCanSeeAuditDB(true);
return SUCCEED;
}
- setCanSeeAuditDB(statement, context.userName);
+ setCanSeeAuditDB(statement, context.getUsername());
if (statement.hasTimeCondition()) {
try {
statement.setAuthorityScope(
PathPatternTreeUtils.intersectWithFullPathPrefixTree(
- AuthorityChecker.getAuthorizedPathTree(context.userName,
PrivilegeType.READ_SCHEMA),
- AuthorityChecker.getAuthorizedPathTree(context.userName,
PrivilegeType.READ_DATA)));
+ AuthorityChecker.getAuthorizedPathTree(
+ context.getUsername(), PrivilegeType.READ_SCHEMA),
+ AuthorityChecker.getAuthorizedPathTree(
+ context.getUsername(), PrivilegeType.READ_DATA)));
} catch (AuthException e) {
return new TSStatus(e.getCode().getStatusCode());
}
@@ -1364,16 +1376,18 @@ public class TreeAccessCheckVisitor extends
StatementVisitor<TSStatus, TreeAcces
@Override
public TSStatus visitCountDevices(
CountDevicesStatement statement, TreeAccessCheckContext context) {
- if (AuthorityChecker.SUPER_USER.equals(context.userName)) {
+ if (AuthorityChecker.SUPER_USER.equals(context.getUsername())) {
return SUCCEED;
}
- setCanSeeAuditDB(statement, context.userName);
+ setCanSeeAuditDB(statement, context.getUsername());
if (statement.hasTimeCondition()) {
try {
statement.setAuthorityScope(
PathPatternTreeUtils.intersectWithFullPathPrefixTree(
- AuthorityChecker.getAuthorizedPathTree(context.userName,
PrivilegeType.READ_SCHEMA),
- AuthorityChecker.getAuthorizedPathTree(context.userName,
PrivilegeType.READ_DATA)));
+ AuthorityChecker.getAuthorizedPathTree(
+ context.getUsername(), PrivilegeType.READ_SCHEMA),
+ AuthorityChecker.getAuthorizedPathTree(
+ context.getUsername(), PrivilegeType.READ_DATA)));
} catch (AuthException e) {
return new TSStatus(e.getCode().getStatusCode());
}