private async Task <bool> IsEventEnabledAsync(AuditTrailEventDescriptor eventDescriptor)
        {
            if (eventDescriptor.IsMandatory)
            {
                return(true);
            }

            var auditTrailSettings = await GetAuditTrailSettingsAsync();

            var auditTrailEventSetting = auditTrailSettings.EventSettings.FirstOrDefault(
                eventSetting => eventSetting.EventName == eventDescriptor.FullEventName);

            return(auditTrailEventSetting != null ? auditTrailEventSetting.IsEnabled : eventDescriptor.IsEnabledByDefault);
        }
        private bool IsEventEnabled(AuditTrailEventDescriptor eventDescriptor)
        {
            if (eventDescriptor.IsMandatory)
            {
                return(true);
            }

            var settingsDictionary = _cacheManager.Get("AuditTrail.EventSettings", context => {
                context.Monitor(_signals.When("AuditTrail.EventSettings"));
                return(_siteService.GetSiteSettings().As <AuditTrailSettingsPart>().EventSettings.ToDictionary(x => x.EventName));
            });
            var setting = settingsDictionary.ContainsKey(eventDescriptor.Event) ? settingsDictionary[eventDescriptor.Event] : default(AuditTrailEventSetting);

            return(setting != null ? setting.IsEnabled : eventDescriptor.IsEnabledByDefault);
        }
Esempio n. 3
0
        private async Task <bool> IsEventEnabledAsync(AuditTrailEventDescriptor descriptor)
        {
            if (descriptor.IsMandatory)
            {
                return(true);
            }

            var settings = await GetAuditTrailSettingsAsync();

            var eventSettings = settings.Categories
                                .FirstOrDefault(category => category.Name == descriptor.Category)?.Events
                                .FirstOrDefault(settings => settings.Name == descriptor.Name);

            return(eventSettings?.IsEnabled ?? descriptor.IsEnabledByDefault);
        }
        public ActionResult Index(PagerParameters pagerParameters, AuditTrailOrderBy?orderBy = null)
        {
            if (!_authorizer.Authorize(Permissions.ViewAuditTrail))
            {
                return(new HttpUnauthorizedResult());
            }

            var pager      = new Pager(_services.WorkContext.CurrentSite, pagerParameters);
            var filters    = Filters.From(Request.QueryString, this);
            var pageOfData = _auditTrailManager.GetRecords(pager.Page, pager.PageSize, filters, orderBy ?? AuditTrailOrderBy.DateDescending);

            // If there's a filter validation error, clear the results.
            if (!ModelState.IsValid)
            {
                pageOfData = new PageOfItems <AuditTrailEventRecord>(Enumerable.Empty <AuditTrailEventRecord>());
            }

            var pagerShape            = New.Pager(pager).TotalItemCount(pageOfData.TotalItemCount);
            var filterDisplay         = _auditTrailManager.BuildFilterDisplay(filters);
            var eventDescriptorsQuery =
                from c in _auditTrailManager.DescribeCategories()
                from e in c.Events
                select e;
            var eventDescriptors      = eventDescriptorsQuery.ToDictionary(x => x.Event);
            var recordViewModelsQuery =
                from record in pageOfData
                let descriptor = eventDescriptors.ContainsKey(record.FullEventName) ? eventDescriptors[record.FullEventName] : AuditTrailEventDescriptor.Basic(record)
                                 select new AuditTrailEventSummaryViewModel {
                Record             = record,
                EventDescriptor    = descriptor,
                CategoryDescriptor = descriptor.CategoryDescriptor,
                SummaryShape       = _displayBuilder.BuildDisplay(record, "SummaryAdmin"),
                ActionsShape       = _displayBuilder.BuildActions(record, "SummaryAdmin"),
            };

            var viewModel = new AuditTrailViewModel {
                Records       = recordViewModelsQuery.ToArray(),
                Pager         = pagerShape,
                OrderBy       = orderBy ?? AuditTrailOrderBy.DateDescending,
                FilterDisplay = filterDisplay
            };

            return(View(viewModel));
        }
 public AuditTrailEventDescriptor DescribeEvent(AuditTrailEventRecord record)
 {
     return(DescribeEvent(record.FullEventName) ?? AuditTrailEventDescriptor.Basic(record));
 }
        /// <summary>
        /// We're creating settings on the fly so that when the user updates the settings the first time, we won't log a massive amount of event settings that have changed.
        /// </summary>
        private AuditTrailEventSetting GetOrCreate(ICollection <AuditTrailEventSetting> settings, AuditTrailEventDescriptor descriptor)
        {
            var setting = settings.FirstOrDefault(x => x.EventName == descriptor.Event);

            if (setting == null)
            {
                setting = new AuditTrailEventSetting {
                    EventName = descriptor.Event,
                    IsEnabled = descriptor.IsMandatory || descriptor.IsEnabledByDefault
                };

                settings.Add(setting);
            }

            return(setting);
        }
Esempio n. 7
0
 private static void BuildSummaryViewModel(AuditTrailContentEventViewModel m, AuditTrailEvent model, AuditTrailContentEvent contentEvent, AuditTrailEventDescriptor descriptor, string latestVersionId)
 {
     m.AuditTrailEvent = model;
     m.Descriptor      = descriptor;
     m.Name            = contentEvent.Name;
     m.ContentItem     = contentEvent.ContentItem;
     m.VersionNumber   = contentEvent.VersionNumber;
     m.Comment         = contentEvent.Comment;
     m.LatestVersionId = latestVersionId;
     m.ContentEvent    = contentEvent;
 }
 public static void BuildViewModel(AuditTrailEvent auditTrailEvent, AuditTrailEventViewModel model, AuditTrailEventDescriptor descriptor)
 {
     model.AuditTrailEvent = auditTrailEvent;
     model.Descriptor      = descriptor;
 }
        public async Task <ActionResult> Index(PagerParameters pagerParameters, AuditTrailOrderBy?orderBy = null)
        {
            if (!await _authorizationService.AuthorizeAsync(User, AuditTrailPermissions.ViewAuditTrail))
            {
                return(Forbid());
            }

            var siteSettings = await _siteService.GetSiteSettingsAsync();

            var pager        = new Pager(pagerParameters, siteSettings.PageSize);
            var filters      = Filters.From(QueryHelpers.ParseQuery(Request.QueryString.Value), _updateModelAccessor.ModelUpdater);
            var searchResult =
                await _auditTrailManager.GetAuditTrailEventsAsync(pager.Page, pager.PageSize, filters, orderBy ?? AuditTrailOrderBy.DateDescending);

            if (!_updateModelAccessor.ModelUpdater.ModelState.IsValid)
            {
                searchResult.AuditTrailEvents = Enumerable.Empty <AuditTrailEvent>();
            }

            var pagerShape = (await _shapeFactory.New.Pager(pager)).TotalItemCount(searchResult.TotalCount);

            var eventDescriptors = _auditTrailManager.DescribeCategories()
                                   .SelectMany(categoryDescriptor => categoryDescriptor.Events)
                                   .ToDictionary(eventDescriptor => eventDescriptor.FullEventName);

            var auditTrailEventsSummaryViewModel = searchResult.AuditTrailEvents.Select(auditTrailEvent =>
            {
                var eventDescriptor = eventDescriptors.ContainsKey(auditTrailEvent.FullEventName) ?
                                      eventDescriptors[auditTrailEvent.FullEventName] : AuditTrailEventDescriptor.Basic(auditTrailEvent);
                return(new AuditTrailEventSummaryViewModel
                {
                    AuditTrailEvent = auditTrailEvent,
                    EventDescriptor = eventDescriptor,
                    CategoryDescriptor = eventDescriptor.CategoryDescriptor,
                    AdditionalColumnsShapes = _auditTrailEventDisplayManager.BuildAdditionalColumnsShapesAsync(auditTrailEvent),
                    SummaryShape = _auditTrailEventDisplayManager.BuildDisplayAsync(auditTrailEvent, "SummaryAdmin"),
                    ActionsShape = _auditTrailEventDisplayManager.BuildActionsAsync(auditTrailEvent, "SummaryAdmin")
                });
            });

            return(View(new AuditTrailViewModel
            {
                AuditTrailEvents = auditTrailEventsSummaryViewModel,
                AdditionalColumnNames = await _auditTrailEventDisplayManager.BuildAdditionalColumnNamesShapesAsync(),
                Pager = pagerShape,
                OrderBy = orderBy ?? AuditTrailOrderBy.DateDescending,
                FilterDisplay = await _auditTrailEventDisplayManager.BuildFilterDisplayAsync(filters)
            }));
        }
Esempio n. 10
0
 public AuditTrailEventDescriptor DescribeEvent(AuditTrailEvent auditTrailEvent) =>
 DescribeEvent(auditTrailEvent.Name, auditTrailEvent.Category)
 ?? AuditTrailEventDescriptor.Default(auditTrailEvent);