Beispiel #1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="context"></param>
        /// <param name="audit"></param>
        /// <param name="auditAction"></param>
        /// <returns></returns>
        protected virtual bool ShouldIntercept(AspectContext context, out AuditInfo audit, out AuditActionInfo auditAction)
        {
            audit       = null;
            auditAction = null;

            if (CrossCuttingConcerns.IsApplied(context.Implementation, Concerns))
            {
                return(false);
            }
            if (context.ServiceMethod.AttributeExists <DisableAuditingAttribute>() || context.ImplementationMethod.AttributeExists <DisableAuditingAttribute>())
            {
                return(false);
            }
            var auditScope = _auditingManager.Current;

            if (auditScope == null)
            {
                return(false);
            }

            if (!_auditingHelper.ShouldSaveAudit(context.ImplementationMethod, true) && !_auditingHelper.ShouldSaveAudit(context.ServiceMethod, true))
            {
                return(false);
            }

            audit       = auditScope.Info;
            auditAction = _auditingHelper.CreateAuditAction(
                context.Implementation.GetType(), context.ImplementationMethod, context.Parameters
                );

            return(true);
        }
Beispiel #2
0
        public void CreateAuditAction()
        {
            var type   = typeof(NonAuditingClassWithAuditedAttribute);
            var method = type.GetMethod("Action");
            var actual = _auditingHelper.CreateAuditAction(type, method, new object[] { "Test", 18 });

            actual.ServiceName.ShouldBe(type.FullName);
            actual.MethodName.ShouldBe(method.Name);
            actual.Parameters.ShouldBe("{\"name\":\"Test\",\"age\":18}");
        }
Beispiel #3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="context"></param>
        /// <param name="audit"></param>
        /// <param name="auditAction"></param>
        /// <returns></returns>
        protected virtual bool ShouldIntercept(IMethodInvocation context, out AuditInfo audit, out AuditActionInfo auditAction)
        {
            audit       = null;
            auditAction = null;
            if (!_options.IsEnabled)
            {
                return(false);
            }
            if (!(_options.IsEnabledForAnonymousUsers || (_principalAccessor.Principal?.Identity?.IsAuthenticated ?? false)))
            {
                return(false);
            }
            if (CrossCuttingConcerns.IsApplied(context.TargetObject, Concerns))
            {
                return(false);
            }
            if (context.Method.AttributeExists <AuditedAttribute>())
            {
                return(true);
            }
            if (context.Method.AttributeExists <DisableAuditingAttribute>())
            {
                return(false);
            }

            var auditScope = _auditingManager.Current;

            if (auditScope == null)
            {
                return(false);
            }

            if (!_auditingHelper.ShouldSaveAudit(context.Method, true))
            {
                return(false);
            }

            audit       = auditScope.Info;
            auditAction = _auditingHelper.CreateAuditAction(
                context.TargetObject.GetType(), context.Method, context.Arguments
                );

            return(true);
        }
Beispiel #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="context"></param>
        /// <param name="audit"></param>
        /// <param name="auditAction"></param>
        /// <returns></returns>
        protected virtual bool ShouldIntercept(AspectContext context, out AuditInfo audit, out AuditActionInfo auditAction)
        {
            audit       = null;
            auditAction = null;
            if (_options.IsEnabled == false)
            {
                return(false);
            }
            if (!(_options.IsEnabledForAnonymousUsers || (_principalAccessor.Principal?.Identity?.IsAuthenticated ?? false)))
            {
                return(false);
            }
            if (CrossCuttingConcerns.IsApplied(context.Implementation, Concerns))
            {
                return(false);
            }

            if (context.ServiceMethod.AttributeExists <DisableAuditingAttribute>() || context.ImplementationMethod.AttributeExists <DisableAuditingAttribute>())
            {
                return(false);
            }

            var auditScope = _auditingManager.Current;

            if (auditScope == null)
            {
                return(false);
            }

            if (!_auditingHelper.ShouldSaveAudit(context.ImplementationMethod, true) && !_auditingHelper.ShouldSaveAudit(context.ServiceMethod, true))
            {
                return(false);
            }

            audit       = auditScope.Info;
            auditAction = _auditingHelper.CreateAuditAction(
                context.Implementation.GetType(), context.ImplementationMethod, context.Parameters
                );

            return(true);
        }
Beispiel #5
0
        private bool ShouldSaveAudit(ActionExecutingContext context, out AuditInfo auditLog, out AuditActionInfo auditLogAction)
        {
            auditLog       = null;
            auditLogAction = null;

            if (!Options.IsEnabled)
            {
                return(false);
            }
            if (!Options.IsAuditingController())
            {
                return(false);
            }

            if (!context.ActionDescriptor.IsControllerAction())
            {
                return(false);
            }

            var auditLogScope = _auditingManager.Current;

            if (auditLogScope == null)
            {
                return(false);
            }

            if (!_auditingHelper.ShouldSaveAudit(context.ActionDescriptor.GetMethodInfo(), true))
            {
                return(false);
            }

            auditLog       = auditLogScope.Info;
            auditLogAction = _auditingHelper.CreateAuditAction(
                context.ActionDescriptor.AsControllerActionDescriptor().ControllerTypeInfo.AsType(),
                context.ActionDescriptor.AsControllerActionDescriptor().MethodInfo,
                context.ActionArguments
                );

            return(true);
        }
Beispiel #6
0
        private bool ShouldSaveAudit(PageHandlerExecutingContext context, out AuditInfo auditLog, out AuditActionInfo auditLogAction)
        {
            auditLog       = null;
            auditLogAction = null;

            if (!Options.IsEnabled)
            {
                return(false);
            }

            if (!Options.IsAuditingPage())
            {
                return(false);
            }

            if (!(context.ActionDescriptor is CompiledPageActionDescriptor))
            {
                return(false);
            }

            var auditLogScope = _auditingManager.Current;

            if (auditLogScope == null)
            {
                return(false);
            }

            if (!_auditingHelper.ShouldSaveAudit(context.HandlerMethod.MethodInfo, true))
            {
                return(false);
            }
            auditLog       = auditLogScope.Info;
            auditLogAction = _auditingHelper.CreateAuditAction(
                context.ActionDescriptor.HandlerTypeInfo,
                context.HandlerMethod.MethodInfo,
                context.HandlerArguments
                );

            return(true);
        }