@@ -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