Skip to content

Commit f2f92b5

Browse files
committed
part
1 parent 857e0b5 commit f2f92b5

File tree

1 file changed

+41
-7
lines changed

1 file changed

+41
-7
lines changed

iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/pipe/source/PipeConfigTreePrivilegeParseVisitor.java

Lines changed: 41 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,18 @@ public Optional<ConfigPhysicalPlan> visitRevokeRole(
184184
return visitRolePlan(revokeRolePlan, userEntity);
185185
}
186186

187+
@Override
188+
public Optional<ConfigPhysicalPlan> visitGrantRoleToUser(
189+
final AuthorTreePlan grantRoleToUserPlan, final IAuditEntity userEntity) {
190+
return visitUserRolePlan(grantRoleToUserPlan, userEntity);
191+
}
192+
193+
@Override
194+
public Optional<ConfigPhysicalPlan> visitRevokeRoleFromUser(
195+
final AuthorTreePlan revokeRoleFromUserPlan, final IAuditEntity userEntity) {
196+
return visitUserRolePlan(revokeRoleFromUserPlan, userEntity);
197+
}
198+
187199
public static Optional<ConfigPhysicalPlan> visitUserRolePlan(
188200
final AuthorPlan plan, final IAuditEntity userEntity) {
189201
final Optional<ConfigPhysicalPlan> result = visitUserPlan(plan, userEntity, false);
@@ -238,24 +250,32 @@ public static Optional<ConfigPhysicalPlan> visitRolePlan(
238250
@Override
239251
public Optional<ConfigPhysicalPlan> visitPipeDeleteTimeSeries(
240252
final PipeDeleteTimeSeriesPlan pipeDeleteTimeSeriesPlan, final IAuditEntity userEntity) {
253+
final CNAuditLogger logger = ConfigNode.getInstance().getConfigManager().getAuditLogger();
254+
final PathPatternTree originalTree =
255+
PathPatternTree.deserialize(pipeDeleteTimeSeriesPlan.getPatternTreeBytes());
256+
userEntity.setPrivilegeType(PrivilegeType.READ_SCHEMA);
257+
final String auditObject = originalTree.getAllPathPatterns().toString();
241258
try {
242-
final PathPatternTree originalTree =
243-
PathPatternTree.deserialize(pipeDeleteTimeSeriesPlan.getPatternTreeBytes());
244259
final PathPatternTree intersectedTree =
245260
originalTree.intersectWithFullPathPrefixTree(getAuthorizedPTree(userEntity));
246261
if (!skip && !originalTree.equals(intersectedTree)) {
262+
logger.recordAuditLog(userEntity.setResult(false), () -> auditObject);
247263
throw new AccessDeniedException(
248264
"Not has privilege to transfer plan: " + pipeDeleteTimeSeriesPlan);
249265
}
250-
return !intersectedTree.isEmpty()
266+
final boolean result = !intersectedTree.isEmpty();
267+
logger.recordAuditLog(userEntity.setResult(result), () -> auditObject);
268+
return result
251269
? Optional.of(new PipeDeleteTimeSeriesPlan(intersectedTree.serialize()))
252270
: Optional.empty();
253271
} catch (final IOException e) {
254272
LOGGER.warn(
255273
"Serialization failed for the delete time series plan in pipe transmission, skip transfer",
256274
e);
275+
logger.recordAuditLog(userEntity.setResult(false), () -> auditObject);
257276
return Optional.empty();
258277
} catch (final AuthException e) {
278+
logger.recordAuditLog(userEntity.setResult(false), () -> auditObject);
259279
if (skip) {
260280
return Optional.empty();
261281
} else {
@@ -268,24 +288,32 @@ public Optional<ConfigPhysicalPlan> visitPipeDeleteTimeSeries(
268288
@Override
269289
public Optional<ConfigPhysicalPlan> visitPipeDeleteLogicalView(
270290
final PipeDeleteLogicalViewPlan pipeDeleteLogicalViewPlan, final IAuditEntity userEntity) {
291+
final CNAuditLogger logger = ConfigNode.getInstance().getConfigManager().getAuditLogger();
292+
final PathPatternTree originalTree =
293+
PathPatternTree.deserialize(pipeDeleteLogicalViewPlan.getPatternTreeBytes());
294+
userEntity.setPrivilegeType(PrivilegeType.READ_SCHEMA);
295+
final String auditObject = originalTree.getAllPathPatterns().toString();
271296
try {
272-
final PathPatternTree originalTree =
273-
PathPatternTree.deserialize(pipeDeleteLogicalViewPlan.getPatternTreeBytes());
274297
final PathPatternTree intersectedTree =
275298
originalTree.intersectWithFullPathPrefixTree(getAuthorizedPTree(userEntity));
276299
if (!skip && !originalTree.equals(intersectedTree)) {
300+
logger.recordAuditLog(userEntity.setResult(false), () -> auditObject);
277301
throw new AccessDeniedException(
278302
"Not has privilege to transfer plan: " + pipeDeleteLogicalViewPlan);
279303
}
280-
return !intersectedTree.isEmpty()
304+
final boolean result = !intersectedTree.isEmpty();
305+
logger.recordAuditLog(userEntity.setResult(result), () -> auditObject);
306+
return result
281307
? Optional.of(new PipeDeleteLogicalViewPlan(intersectedTree.serialize()))
282308
: Optional.empty();
283309
} catch (final IOException e) {
284310
LOGGER.warn(
285311
"Serialization failed for the delete time series plan in pipe transmission, skip transfer",
286312
e);
313+
logger.recordAuditLog(userEntity.setResult(false), () -> auditObject);
287314
return Optional.empty();
288315
} catch (final AuthException e) {
316+
logger.recordAuditLog(userEntity.setResult(false), () -> auditObject);
289317
if (skip) {
290318
return Optional.empty();
291319
} else {
@@ -298,6 +326,9 @@ public Optional<ConfigPhysicalPlan> visitPipeDeleteLogicalView(
298326
@Override
299327
public Optional<ConfigPhysicalPlan> visitPipeDeactivateTemplate(
300328
final PipeDeactivateTemplatePlan pipeDeactivateTemplatePlan, final IAuditEntity userEntity) {
329+
final CNAuditLogger logger = ConfigNode.getInstance().getConfigManager().getAuditLogger();
330+
userEntity.setPrivilegeType(PrivilegeType.READ_SCHEMA);
331+
final String auditObject = pipeDeactivateTemplatePlan.getTemplateSetInfo().toString();
301332
try {
302333
final Map<PartialPath, List<Template>> newTemplateSetInfo = new HashMap<>();
303334
for (final Map.Entry<PartialPath, List<Template>> templateEntry :
@@ -312,10 +343,13 @@ public Optional<ConfigPhysicalPlan> visitPipeDeactivateTemplate(
312343
}
313344
}
314345
}
346+
final boolean result = !newTemplateSetInfo.isEmpty();
347+
logger.recordAuditLog(userEntity.setResult(result), () -> auditObject);
315348
return !newTemplateSetInfo.isEmpty()
316349
? Optional.of(new PipeDeactivateTemplatePlan(newTemplateSetInfo))
317350
: Optional.empty();
318351
} catch (final AuthException e) {
352+
logger.recordAuditLog(userEntity.setResult(false), () -> auditObject);
319353
if (skip) {
320354
return Optional.empty();
321355
} else {
@@ -364,7 +398,7 @@ private PathPatternTree getAuthorizedPTree(final IAuditEntity userEntity) throws
364398
return ConfigNode.getInstance()
365399
.getConfigManager()
366400
.getPermissionManager()
367-
.fetchRawAuthorizedPTree(userEntity, PrivilegeType.READ_SCHEMA);
401+
.fetchRawAuthorizedPTree(userEntity.getUsername(), PrivilegeType.READ_SCHEMA);
368402
}
369403

370404
public static boolean hasGlobalPrivilege(

0 commit comments

Comments
 (0)