Exemple #1
0
        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
            });
        }
Exemple #4
0
        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));
 }
Exemple #7
0
 public dynamic BuildActions(AuditTrailEventRecord record, string displayType)
 {
     return(BuildEventShape("AuditTrailEventActions", record, displayType));
 }