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; }
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; } } }
/// <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) }; }
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 dynamic BuildActions(AuditTrailEventRecord record, string displayType) { return BuildEventShape("AuditTrailEventActions", record, displayType); }