/// <inheritdoc />
        public override void OnActionExecuting(ActionExecutingContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            if (context.ActionDescriptor.FilterDescriptors.Any(x => x.Filter is IgnoreRequestsSignatureValidationAttribute))
            {
                return;
            }

            var validationResult = context.HttpContext.GetSignatureValidationResult();

            if (validationResult == null || !AcceptedStatus.Contains(validationResult.Status))
            {
                if (ThrowsOnValidationError)
                {
                    throw new RequestsSignatureValidationException(validationResult);
                }

                context.Result = new UnauthorizedResult();
                return;
            }

            if (ClientIds != null && ClientIds.Any())
            {
                if (!ClientIds.Contains(validationResult.ClientId))
                {
                    if (ThrowsOnValidationError)
                    {
                        throw new RequestsSignatureValidationException(validationResult);
                    }

                    context.Result = new StatusCodeResult(StatusCodes.Status403Forbidden);
                    return;
                }
            }

            base.OnActionExecuting(context);
        }
Exemple #2
0
        public bool IsAccepted(ViewData dataEntry)
        {
            if (ClientIds != null && !ClientIds.Contains(dataEntry.ClientId))
            {
                return(false);
            }

            if (Type != null && dataEntry.DataManagerType.TypeId.IndexOf(Type, StringComparison.OrdinalIgnoreCase) == -1)
            {
                return(false);
            }

            if (!string.IsNullOrEmpty(SearchText) &&
                (dataEntry.EntryName.IndexOf(SearchText, StringComparison.OrdinalIgnoreCase) == -1 ||
                 dataEntry.DataManagerType.TypeId.IndexOf(SearchText, StringComparison.OrdinalIgnoreCase) == -1))
            {
                return(false);
            }

            return(true);
        }