/// <summary> /// Called to write save audit log entries. /// </summary> /// <param name="success">if set to <c>true</c> [success].</param> /// <param name="accessRuleDetails">The report details.</param> protected override void OnWriteSaveAuditLogEntries(bool success, AuditLogReportDetails accessRuleDetails) { if (accessRuleDetails.IsAccessRuleReport) { AuditLog.OnChangeAccessRuleQuery(success, accessRuleDetails.SubjectName, accessRuleDetails.SecuredTypeName, accessRuleDetails.AccessRuleReportName); } }
/// <summary> /// Called to gather audit log entity details for save. /// </summary> /// <param name="report">The report.</param> /// <returns></returns> protected override AuditLogReportDetails OnGatherAuditLogEntityDetailsForSave(Report report) { var reportInternal = report as IEntityInternal; IEntityFieldValues fields; IDictionary <long, IChangeTracker <IMutableIdKey> > forwardRelationships; IDictionary <long, IChangeTracker <IMutableIdKey> > reverseRelationships; report.GetChanges(out fields, out forwardRelationships, out reverseRelationships); var reportDetails = new AuditLogReportDetails(); if (reportInternal.IsTemporaryId) { return(reportDetails); } if ((fields != null && fields.Any()) || (reverseRelationships != null && reverseRelationships.Count > 0) || (forwardRelationships != null && forwardRelationships.Count > 0)) { AccessRule accessRule = report.ReportForAccessRule; if (accessRule != null) { // gather info to notify that an access rule's query has changed reportDetails.IsAccessRuleReport = true; reportDetails.AccessRuleReportName = report.Name; SecurableEntity controlAccess = accessRule.ControlAccess; if (controlAccess != null) { reportDetails.SecuredTypeName = controlAccess.Name; } Subject allowAccessBy = accessRule.AllowAccessBy; if (allowAccessBy != null) { reportDetails.SubjectName = allowAccessBy.Name; } } } return(reportDetails); }