public void ExecuteRecipeStep(RecipeContext recipeContext) { if (!String.Equals(recipeContext.RecipeStep.Name, "AuditTrail", StringComparison.OrdinalIgnoreCase)) { return; } if (!_authorizer.Authorize(Permissions.ImportAuditTrail)) { Logger.Warning("Blocked {0} from importing an audit trail because this user does not have the ImportauditTrail permission.", _wca.GetContext().CurrentUser.UserName); recipeContext.Executed = false; return; } foreach (var eventElement in recipeContext.RecipeStep.Step.Elements()) { var record = new AuditTrailEventRecord { EventName = eventElement.Attr <string>("Name"), FullEventName = eventElement.Attr <string>("FullName"), Category = eventElement.Attr <string>("Category"), UserName = eventElement.Attr <string>("User"), CreatedUtc = eventElement.Attr <DateTime>("CreatedUtc"), EventFilterKey = eventElement.Attr <string>("EventFilterKey"), EventFilterData = eventElement.Attr <string>("EventFilterData"), Comment = eventElement.El("Comment"), EventData = eventElement.Element("EventData").ToString(), }; _auditTrailEventRepository.Create(record); } recipeContext.Executed = true; }
/// <summary> /// Returns a basic descriptor based on an event record. /// This is useful in cases where event records were previously stored by providers that are no longer enabled. /// </summary> public static AuditTrailEventDescriptor Basic(AuditTrailEventRecord record) { return(new AuditTrailEventDescriptor { CategoryDescriptor = new AuditTrailCategoryDescriptor { Category = record.Category, Events = Enumerable.Empty <AuditTrailEventDescriptor>(), Name = new LocalizedString(record.Category) }, Event = record.EventName, Name = new LocalizedString(record.EventName) }); }
public AuditTrailEventRecordResult CreateRecord <T>(string eventName, IUser user, IDictionary <string, object> properties = null, IDictionary <string, object> eventData = null, string eventFilterKey = null, string eventFilterData = null) where T : IAuditTrailEventProvider { var eventDescriptor = DescribeEvent <T>(eventName); if (!IsEventEnabled(eventDescriptor)) { return new AuditTrailEventRecordResult { Record = null, IsDisabled = true } } ; if (properties == null) { properties = new Dictionary <string, object>(); } if (eventData == null) { eventData = new Dictionary <string, object>(); } var context = new AuditTrailCreateContext { Event = eventName, User = user, Properties = properties, EventData = eventData, EventFilterKey = eventFilterKey, EventFilterData = eventFilterData }; _auditTrailEventHandlers.Create(context); var record = new AuditTrailEventRecord { Category = eventDescriptor.CategoryDescriptor.Category, EventName = eventName, FullEventName = eventDescriptor.Event, CreatedUtc = _clock.UtcNow, UserName = user != null ? user.UserName : null, EventData = _serializer.Serialize(context.EventData), EventFilterKey = context.EventFilterKey, EventFilterData = context.EventFilterData, Comment = context.Comment, ClientIpAddress = GetClientAddress() }; _auditTrailRepository.Create(record); return(new AuditTrailEventRecordResult { Record = record, IsDisabled = false }); }
private dynamic BuildEventShape(string shapeType, AuditTrailEventRecord record, string displayType) { var eventData = _serializer.Deserialize(record.EventData); var descriptor = _auditTrailManager.DescribeEvent(record); var auditTrailEventActionsShape = _shapeFactory.Create(shapeType, Arguments.From(new Dictionary <string, object> { { "Record", record }, { "EventData", eventData }, { "Descriptor", descriptor } })); var metaData = auditTrailEventActionsShape.Metadata; metaData.DisplayType = displayType; metaData.Alternates.Add(String.Format("{0}_{1}", shapeType, displayType)); metaData.Alternates.Add(String.Format("{0}__{1}", shapeType, record.Category)); metaData.Alternates.Add(String.Format("{0}_{1}__{2}", shapeType, displayType, record.Category)); metaData.Alternates.Add(String.Format("{0}__{1}__{2}", shapeType, record.Category, record.EventName)); metaData.Alternates.Add(String.Format("{0}_{1}__{2}__{3}", shapeType, displayType, record.Category, record.EventName)); return(auditTrailEventActionsShape); }
public override void Execute(RecipeExecutionContext context) { if (!_authorizer.Authorize(Permissions.ImportAuditTrail)) { Logger.Warning("Blocked {0} from importing an audit trail because this user does not have the ImportauditTrail permission.", _wca.GetContext().CurrentUser.UserName); return; } var elements = context.RecipeStep.Step.Elements().ToArray(); for (var i = 0; i < elements.Length; i++) { var eventElement = elements[i]; Logger.Information("Importing audit trail event {0}/{1}.", i + 1, elements.Length); try { var record = new AuditTrailEventRecord { EventName = eventElement.Attr <string>("Name"), FullEventName = eventElement.Attr <string>("FullName"), Category = eventElement.Attr <string>("Category"), UserName = eventElement.Attr <string>("User"), CreatedUtc = eventElement.Attr <DateTime>("CreatedUtc"), EventFilterKey = eventElement.Attr <string>("EventFilterKey"), EventFilterData = eventElement.Attr <string>("EventFilterData"), Comment = eventElement.El("Comment"), EventData = eventElement.Element("EventData").ToString(), }; _auditTrailEventRepository.Create(record); } catch (Exception ex) { Logger.Error(ex, "Error while importing audit trail event {0}/{1}.", i + 1, elements.Length); throw; } } }
public AuditTrailEventDescriptor DescribeEvent(AuditTrailEventRecord record) { return(DescribeEvent(record.FullEventName) ?? AuditTrailEventDescriptor.Basic(record)); }
public dynamic BuildActions(AuditTrailEventRecord record, string displayType) { return(BuildEventShape("AuditTrailEventActions", record, displayType)); }