Skip to content

Commit acc5210

Browse files
committed
Update IoTDBConfigNodeReceiver.java
1 parent e39c9c4 commit acc5210

File tree

1 file changed

+37
-12
lines changed

1 file changed

+37
-12
lines changed

iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/receiver/protocol/IoTDBConfigNodeReceiver.java

Lines changed: 37 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@
8585
import org.apache.iotdb.confignode.consensus.request.write.template.CreateSchemaTemplatePlan;
8686
import org.apache.iotdb.confignode.consensus.request.write.template.ExtendSchemaTemplatePlan;
8787
import org.apache.iotdb.confignode.consensus.request.write.trigger.DeleteTriggerInTablePlan;
88+
import org.apache.iotdb.confignode.consensus.request.write.trigger.UpdateTriggerStateInTablePlan;
8889
import org.apache.iotdb.confignode.manager.ConfigManager;
8990
import org.apache.iotdb.confignode.manager.pipe.event.PipeConfigRegionSnapshotEvent;
9091
import org.apache.iotdb.confignode.manager.pipe.metric.receiver.PipeConfigNodeReceiverMetrics;
@@ -297,8 +298,9 @@ private TSStatus checkPermission(final ConfigPhysicalPlan plan) throws IOExcepti
297298
return status;
298299
}
299300

300-
String database;
301-
String templateName;
301+
final String database;
302+
final String templateName;
303+
final String triggerName;
302304
switch (plan.getType()) {
303305
case CreateDatabase:
304306
database = ((DatabaseSchemaPlan) plan).getSchema().getName();
@@ -351,7 +353,7 @@ private TSStatus checkPermission(final ConfigPhysicalPlan plan) throws IOExcepti
351353
.getAllPathPatterns()),
352354
true);
353355
case PipeAlterEncodingCompressor:
354-
// Judge here in the future
356+
// The audit check does not need any
355357
if (configManager
356358
.checkUserPrivileges(username, new PrivilegeUnion(PrivilegeType.AUDIT))
357359
.getStatus()
@@ -424,10 +426,11 @@ private TSStatus checkPermission(final ConfigPhysicalPlan plan) throws IOExcepti
424426
PrivilegeType.WRITE_SCHEMA))
425427
.getStatus();
426428
case UpdateTriggerStateInTable:
429+
triggerName = ((UpdateTriggerStateInTablePlan) plan).getTriggerName();
430+
return checkGlobalStatus(userEntity, PrivilegeType.USE_TRIGGER, triggerName, true);
427431
case DeleteTriggerInTable:
428-
return configManager
429-
.checkUserPrivileges(username, new PrivilegeUnion(PrivilegeType.USE_TRIGGER))
430-
.getStatus();
432+
triggerName = ((DeleteTriggerInTablePlan) plan).getTriggerName();
433+
return checkGlobalStatus(userEntity, PrivilegeType.USE_TRIGGER, triggerName, true);
431434
case PipeCreateTableOrView:
432435
return configManager
433436
.checkUserPrivileges(
@@ -597,9 +600,8 @@ username, new PrivilegeUnion(PrivilegeType.values()[permission], true))
597600
case DropUserV2:
598601
case RDropUser:
599602
case RDropUserV2:
600-
return configManager
601-
.checkUserPrivileges(username, new PrivilegeUnion(PrivilegeType.MANAGE_USER))
602-
.getStatus();
603+
return checkGlobalStatus(
604+
userEntity, PrivilegeType.MANAGE_USER, ((AuthorPlan) plan).getUserName(), true);
603605
case CreateRole:
604606
case RCreateRole:
605607
case DropRole:
@@ -608,9 +610,8 @@ username, new PrivilegeUnion(PrivilegeType.values()[permission], true))
608610
case RGrantUserRole:
609611
case RevokeRoleFromUser:
610612
case RRevokeUserRole:
611-
return configManager
612-
.checkUserPrivileges(username, new PrivilegeUnion(PrivilegeType.MANAGE_ROLE))
613-
.getStatus();
613+
return checkGlobalStatus(
614+
userEntity, PrivilegeType.MANAGE_ROLE, ((AuthorPlan) plan).getRoleName(), true);
614615
default:
615616
return StatusUtils.OK;
616617
}
@@ -639,6 +640,30 @@ public static TSStatus checkDatabaseStatus(
639640
return result;
640641
}
641642

643+
public static TSStatus checkTableStatus(
644+
final IAuditEntity userEntity,
645+
final PrivilegeType privilegeType,
646+
final String database,
647+
final String tableName,
648+
final boolean isLastCheck) {
649+
final ConfigManager configManager = ConfigNode.getInstance().getConfigManager();
650+
final CNAuditLogger logger = configManager.getAuditLogger();
651+
final TSStatus result =
652+
configManager
653+
.getPermissionManager()
654+
.checkUserPrivileges(
655+
userEntity.getUsername(), new PrivilegeUnion(database, tableName, privilegeType))
656+
.getStatus();
657+
if (result.getCode() == TSStatusCode.SUCCESS_STATUS.getStatusCode() || isLastCheck) {
658+
logger.recordAuditLog(
659+
userEntity
660+
.setPrivilegeType(privilegeType)
661+
.setResult(result.getCode() == TSStatusCode.SUCCESS_STATUS.getStatusCode()),
662+
() -> tableName);
663+
}
664+
return result;
665+
}
666+
642667
private TSStatus executePlan(final ConfigPhysicalPlan plan) throws ConsensusException {
643668
final String queryId = generatePseudoQueryId();
644669
switch (plan.getType()) {

0 commit comments

Comments
 (0)