Exemplo n.º 1
0
        /// <summary>
        /// Method filters search items by allowed roles and users
        /// </summary>
        /// <param name="queryBuilder"></param>
        /// <returns></returns>
        public static AzureSearchQueryBuilder FilterOnRoleAccess(this AzureSearchQueryBuilder queryBuilder)
        {
            var currentPrincipalRoles = PrincipalInfo.Current?.RoleList ?? Enumerable.Empty <string>();

            var rolesAccessFilters = currentPrincipalRoles
                                     .Select(roleName => new AzureSearchQueryFilter(nameof(ContentDocument.AccessRoles),
                                                                                    ComparisonExpression.Eq, roleName)
            {
                GroupingExpression = GroupingExpression.Any
            });

            return(queryBuilder.Filter(new FilterComposite(Operator.Or, rolesAccessFilters)));
        }
        private static AzureSearchQuery CreateSearchQuery(EPiServer.Shell.Search.Query query, CultureInfo currentCulture)
        {
            var queryBuilder = new AzureSearchQueryBuilder()
                               .Top(query.MaxResults)
                               .SearchTerm(query.SearchQuery);

            if (query.FilterOnCulture)
            {
                queryBuilder.Filter(AzureSearchQueryFilter.Equals(nameof(ContentDocument.ContentLanguage),
                                                                  currentCulture.Name));
            }

            return(queryBuilder.Build());
        }