/// <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()); }