예제 #1
0
        public AppendAuthorizeToSummaryOperationFilter()
        {
            var policySelector = new PolicySelectorWithLabel <AuthorizeAttribute>
            {
                Label    = "policies",
                Selector = authAttributes =>
                           authAttributes
                           .Where(a => !string.IsNullOrEmpty(a.Policy))
                           .Select(a => a.Policy)
            };

            var rolesSelector = new PolicySelectorWithLabel <AuthorizeAttribute>
            {
                Label    = "roles",
                Selector = authAttributes =>
                           authAttributes
                           .Where(a => !string.IsNullOrEmpty(a.Roles))
                           .Select(a => a.Roles)
            };

            filter = new AppendAuthorizeToSummaryOperationFilter <AuthorizeAttribute>(new[] { policySelector, rolesSelector }.AsEnumerable());
        }
        private void AppendPolicies(IEnumerable <T> authorizeAttributes, StringBuilder authorizationDescription, PolicySelectorWithLabel <T> policySelector)
        {
            var policies = policySelector.Selector(authorizeAttributes)
                           .OrderBy(policy => policy);

            if (policies.Any())
            {
                authorizationDescription.Append($" {policySelector.Label}: {string.Join(", ", policies)};");
            }
        }