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;
        }
Exemple #2
0
        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);
 }