public LuceneSearchWithSpatialContext(ILuceneProviderIndex index, SearchSecurityOptions securityOptions = SearchSecurityOptions.EnableSecurityCheck)
     : base(index, securityOptions)
 {
     Assert.ArgumentNotNull(index, "index");
     this.index    = index;
     this.settings = this.index.Locator.GetInstance <IContentSearchConfigurationSettings>();
 }
 public AlgoliaSearchContext(AlgoliaBaseIndex index,
                             SearchSecurityOptions securityOptions = SearchSecurityOptions.EnableSecurityCheck)
 {
     Assert.ArgumentNotNull(index, "index");
     this.Index           = index;
     this.SecurityOptions = securityOptions;
 }
Example #3
0
 public override IProviderSearchContext CreateSearchContext(SearchSecurityOptions options = SearchSecurityOptions.Default)
 {
     if (this.Group != IndexGroup.Experience)
     {
         return(new Sitecore.Spatial.GeoJson.Providers.Solr.SolrSearchContext(this, options));
     }
     return(new SolrAnalyticsSearchContext(this, options));
 }
 public SolrSearchWithSpatialContext(SolrSearchIndex index, SearchSecurityOptions options = SearchSecurityOptions.EnableSecurityCheck)
     : base(index, options)
 {
     Assert.ArgumentNotNull((object)index, "index");
     Assert.ArgumentNotNull((object)options, "options");
     this.index = index;
     this.contentSearchSettings = this.index.Locator.GetInstance <IContentSearchConfigurationSettings>();
     this.settings        = this.index.Locator.GetInstance <ISettings>();
     this.securityOptions = options;
 }
 public AzureSearchContext(IAzureProviderIndex index, SearchSecurityOptions securityOptions = SearchSecurityOptions.Default)
 {
     Index = index;
     if (securityOptions == SearchSecurityOptions.Default)
     {
         SecurityOptions = index.Configuration.DefaultSearchSecurityOption;
     }
     else
     {
         SecurityOptions = securityOptions;
     }
     Settings = Index.Locator.GetInstance <IContentSearchConfigurationSettings>();
 }
Example #6
0
        public override TElement MapToType <TElement>(Document document, SelectMethod selectMethod,
                                                      IEnumerable <IFieldQueryTranslator> virtualFieldProcessors,
                                                      IEnumerable <IExecutionContext> executionContexts,
                                                      SearchSecurityOptions securityOptions)
        {
            var typeOfTElement = typeof(TElement);

            if (!typeof(IItemWrapper).IsAssignableFrom(typeOfTElement))
            {
                return(base.MapToType <TElement>(document, selectMethod, virtualFieldProcessors, executionContexts,
                                                 securityOptions));
            }

            Guid itemId;
            Guid templateId;

            var fields = ExtractFieldsFromDocument(document, virtualFieldProcessors);

            if (fields.ContainsKey(Templates.Fields.Group) &&
                fields.ContainsKey(Templates.Fields.TemplateName) &&
                Guid.TryParse(fields[Templates.Fields.Group].ToString(), out itemId) &&
                Guid.TryParse(fields[Templates.Fields.TemplateName].ToString(), out templateId))
            {
                var item = Global.SpawnProvider.FromItem(itemId, templateId, typeOfTElement, fields);

                if (item is TElement)
                {
                    return((TElement)item);
                }
            }

            if (fields.ContainsKey(Templates.Fields.UniqueId))
            {
                var id = fields[Templates.Fields.UniqueId].ToString();

                var uri  = ItemUri.Parse(id);
                var item = Sitecore.Context.Database.GetItem(uri.ToDataUri());

                if (item != null)
                {
                    var mappedItem = Global.SpawnProvider.FromItem(item);
                    if (mappedItem is TElement)
                    {
                        return((TElement)mappedItem);
                    }
                }
            }

            return(default(TElement));
        }
Example #7
0
        public SSSolrSearchContext(SSSolrSearchIndex index, SearchSecurityOptions options = SearchSecurityOptions.Default)
        {
            Assert.ArgumentNotNull(index, nameof(index));
            Assert.ArgumentNotNull(options, nameof(options));
            if (options == SearchSecurityOptions.Default)
            {
                options = index.Configuration.DefaultSearchSecurityOption;
            }
            this.index            = index;
            contentSearchSettings = index.Locator.GetInstance <IContentSearchConfigurationSettings>();
            settings        = index.Locator.GetInstance <ISettings>();
            securityOptions = options;

            var solrUrl = $"{SolrContentSearchManager.SolrSettings.ServiceAddress().TrimEnd('/')}/";

            _api = new SearchContext(new System.Net.Http.HttpClient
            {
                BaseAddress = new Uri(solrUrl)
            }, index.Core, new SitecoreNodeTranslator(new FieldTranslator(index.FieldNameTranslator)), new ResposeTranslator(index.FieldNameTranslator));
        }
        public override TElement MapToType <TElement>(Dictionary <string, object> document, SelectMethod selectMethod, IEnumerable <IFieldQueryTranslator> virtualFieldProcessors, IEnumerable <IExecutionContext> executionContexts, SearchSecurityOptions securityOptions)
        {
            ConvertDocumentToSythesisStandardTemplate(document);
            var mappingResult = _synthesisMapper.MapToType <TElement>(() => ExtractFieldsFromDocument(document, virtualFieldProcessors), selectMethod);

            // if the result type is not IStandardTemplateItem, use the default functionality
            if (!mappingResult.MappedSuccessfully)
            {
                return(base.MapToType <TElement>(document, selectMethod, virtualFieldProcessors, executionContexts, securityOptions));
            }

            return(mappingResult.Document);
        }
 protected SpatialLuceneSearchContext(ILuceneProviderIndex index, CreateSearcherOption options = CreateSearcherOption.Writeable, SearchSecurityOptions securityOptions = SearchSecurityOptions.EnableSecurityCheck)
     : base(index, options, securityOptions)
 {
 }
 public SpatialLuceneSearchContext(ILuceneProviderIndex index, SearchSecurityOptions securityOptions = SearchSecurityOptions.EnableSecurityCheck)
     : base(index, securityOptions)
 {
     spatialFilterContext = new SpatialFilterContext(new SpatialFilterContext.CriterionContainer());
 }
Example #11
0
 public IProviderSearchContext CreateSearchContext(SearchSecurityOptions options = SearchSecurityOptions.EnableSecurityCheck)
 {
     //START: post 9
     return(new XmlSearchContext(this, options));
     //END: post 9
 }
 public override IProviderSearchContext CreateSearchContext(SearchSecurityOptions securityOptions = SearchSecurityOptions.EnableSecurityCheck)
 {
     this.EnsureInitialized();
     return(new SpatialLuceneSearchContext(this, securityOptions));
 }
 protected SpatialLuceneSearchContext(ILuceneProviderIndex index, CreateSearcherOption options = CreateSearcherOption.Writeable, SearchSecurityOptions securityOptions = SearchSecurityOptions.EnableSecurityCheck)
     : base(index, options, securityOptions)
 {
 }
Example #14
0
 public override IProviderSearchContext CreateSearchContext(SearchSecurityOptions options = SearchSecurityOptions.Default)
 {
     return(new SSSolrSearchContext(this, options));
 }
 public override IProviderSearchContext CreateSearchContext(SearchSecurityOptions securityOptions = SearchSecurityOptions.EnableSecurityCheck)
 {
     this.EnsureInitialized();
     return new SpatialLuceneSearchContext(this, securityOptions);
 }
 public IProviderSearchContext CreateSearchContext(SearchSecurityOptions options = SearchSecurityOptions.Default)
 {
     throw new NotImplementedException();
 }
Example #17
0
 public override IProviderSearchContext CreateSearchContext(
     SearchSecurityOptions options = SearchSecurityOptions.EnableSecurityCheck)
 {
     return(new AlgoliaSearchContext(this, options));
 }
 public override IProviderSearchContext CreateSearchContext(SearchSecurityOptions options = SearchSecurityOptions.Default)
 {
     this.EnsureInitialized();
     return new AzureSearchContext(this, options);
 }
 public override IProviderSearchContext CreateSearchContext(SearchSecurityOptions options = SearchSecurityOptions.Default)
 {
     this.EnsureInitialized();
     return(new AzureSearchContext(this, options));
 }
        private static IQueryResponse <Dictionary <string, object> > ApplySecurity(IQueryResponse <Dictionary <string, object> > queryResults, SearchSecurityOptions options, ref int resultsTotal)
        {
            if (!options.HasFlag(SearchSecurityOptions.DisableSecurityCheck))
            {
                var hitsToRemove = new HashSet <IHit <Dictionary <string, object> > >();
                foreach (var hit in from searchResult in queryResults.Hits.Hits
                         where searchResult != null
                         select searchResult)
                {
                    object uniqueId;
                    if (!hit.Source.TryGetValue("_uniqueid", out uniqueId))                     //TODO: shouldn't have to use the Source property here, the Fields property should be populated. probably something wrong with field mapping.
                    {
                        continue;
                    }

                    object datasource;
                    hit.Source.TryGetValue("_datasource", out datasource);                     //TODO: shouldn't have to use the Source property here, the Fields property should be populated. probably something wrong with field mapping.
                    if (!OutboundIndexFilterPipeline.CheckItemSecurity(new OutboundIndexFilterArgs((string)uniqueId, (string)datasource)))
                    {
                        continue;
                    }

                    hitsToRemove.Add(hit);
                }

                foreach (var hit in hitsToRemove)
                {
                    queryResults.Hits.Hits.Remove(hit);
                    resultsTotal--;
                }
            }
            return(queryResults);
        }
Example #21
0
 public override IProviderSearchContext CreateSearchContext(SearchSecurityOptions options = SearchSecurityOptions.Default)
 {
     throw new NotImplementedException();
 }
Example #22
0
        public override TElement MapToType <TElement>(Dictionary <string, object> document, SelectMethod selectMethod, IEnumerable <IFieldQueryTranslator> virtualFieldProcessors, SearchSecurityOptions securityOptions)
        {
            var typeOfTElement = typeof(TElement);

            if (!typeof(IItemWrapper).IsAssignableFrom(typeOfTElement))
            {
                return(base.MapToType <TElement>(document, selectMethod, virtualFieldProcessors, securityOptions));
            }

            Guid itemId;
            Guid templateId;

            if (document.ContainsKey(Templates.Fields.Group) &&
                document.ContainsKey(Templates.Fields.TemplateName) &&
                Guid.TryParse(document[Templates.Fields.Group].ToString(), out itemId) &&
                Guid.TryParse(document[Templates.Fields.TemplateName].ToString(), out templateId))
            {
                var item = Global.SpawnProvider.FromItem(itemId, templateId, typeOfTElement, document);

                if (item is TElement)
                {
                    return((TElement)item);
                }
            }

            return(default(TElement));
        }
 public SpatialLuceneSearchContext(ILuceneProviderIndex index, SearchSecurityOptions securityOptions = SearchSecurityOptions.EnableSecurityCheck)
     : base(index, securityOptions)
 {
     spatialFilterContext = new SpatialFilterContext(new SpatialFilterContext.CriterionContainer());
 }
Example #24
0
        private static SolrQueryResults <Dictionary <string, object> > ApplySecurity(SolrQueryResults <Dictionary <string, object> > solrQueryResults, SearchSecurityOptions options, ICorePipeline pipeline, IAccessRight accessRight, ref int numberFound)
        {
            if (!options.HasFlag(SearchSecurityOptions.DisableSecurityCheck))
            {
                var removalList = new HashSet <Dictionary <string, object> >();

                foreach (var searchResult in solrQueryResults.Where(searchResult => searchResult != null))
                {
                    object secToken;
                    object dataSource;

                    if (!searchResult.TryGetValue(BuiltinFields.UniqueId, out secToken))
                    {
                        continue;
                    }

                    searchResult.TryGetValue(BuiltinFields.DataSource, out dataSource);

                    var isExcluded = OutboundIndexFilterPipeline.CheckItemSecurity(pipeline, accessRight, new OutboundIndexFilterArgs((string)secToken, (string)dataSource));

                    if (isExcluded)
                    {
                        removalList.Add(searchResult);
                        numberFound = numberFound - 1;
                    }
                }

                foreach (var item in removalList)
                {
                    solrQueryResults.Remove(item);
                }
            }

            return(solrQueryResults);
        }
 public ElasticSearchContext(ElasticSearchIndex index,
                             SearchSecurityOptions securityOptions = SearchSecurityOptions.EnableSecurityCheck)
 {
     Index           = index;
     SecurityOptions = securityOptions;
 }
 public override IProviderSearchContext CreateSearchContext(SearchSecurityOptions options = SearchSecurityOptions.Default)
 {
     return(null);
 }
 public IProviderSearchContext CreateSearchContext(SearchSecurityOptions options = SearchSecurityOptions.EnableSecurityCheck)
 {
     return(new ElasticSearchContext(this, options));
 }
Example #28
0
        public override TElement MapToType <TElement>(Document document, SelectMethod selectMethod, IEnumerable <IFieldQueryTranslator> virtualFieldProcessors, SearchSecurityOptions securityOptions)
        {
            if (typeof(TElement) == typeof(SitecoreUISearchResultItem))
            {
                return(base.MapToType <TElement>(document, selectMethod, virtualFieldProcessors, securityOptions));
            }

            _sitecoreContext = new SitecoreContext();
            if (selectMethod != null)
            {
                var parameters = selectMethod.Delegate.Method.GetParameters();
                if (parameters.Length != 2)
                {
                    throw new InvalidOperationException("Invalid number of select delegate parameters.");
                }
                var underlyingSystemType = parameters[1].ParameterType.UnderlyingSystemType;
                var instance             = Activator.CreateInstance(underlyingSystemType);
                var strArray             = selectMethod.FieldNames == null || selectMethod.FieldNames.Length <= 0 ? null : selectMethod.FieldNames;

                ReadDocumentFields(document, strArray, GetTypeMap(underlyingSystemType), virtualFieldProcessors, instance);
                return((TElement)selectMethod.Delegate.DynamicInvoke(instance));
            }
            else
            {
                var documentFieldNames = GetDocumentFieldNames(document);
                var templateId         = document.Get("_template");
                var instance           = CreateInstance <TElement>(templateId);
                var typeMap            = GetTypeMap(instance.GetType());

                //TODO: use ID.Parse on document.Get("_id") ?
                Guid id;
                if (Guid.TryParse(document.Get("_group"), out id))
                {
                    SetupProxy(id, document.GetFields().Select(x => x.Name.ToLower()), (object)instance as IProxyTargetAccessor);
                }

                ReadDocumentFields(document, documentFieldNames, typeMap, virtualFieldProcessors, instance);

                return(instance);
            }
        }
 public override IProviderSearchContext CreateSearchContext(SearchSecurityOptions options = SearchSecurityOptions.Default)
 {
     return null;
 }
            private static SolrQueryResults <Dictionary <string, object> > ApplySecurity(SolrQueryResults <Dictionary <string, object> > solrQueryResults, SearchSecurityOptions options, BaseCorePipelineManager pipeline, IAccessRight accessRight, ref int numberFound)
            {
                if (!options.HasFlag(SearchSecurityOptions.DisableSecurityCheck))
                {
                    var hashSet = new HashSet <Dictionary <string, object> >();
                    foreach (var dictionary in solrQueryResults.Where(searchResult => searchResult != null))
                    {
                        object obj1;
                        if (dictionary.TryGetValue("_uniqueid", out obj1))
                        {
                            object obj2;
                            dictionary.TryGetValue("_datasource", out obj2);

                            var args = new OutboundIndexFilterArgs((string)obj1, (string)obj2)
                            {
                                AccessRight = accessRight.ItemRead()
                            };

                            pipeline.Run("indexing.filterIndex.outbound", args);

                            if (args.IsExcluded)
                            {
                                hashSet.Add(dictionary);
                                numberFound = numberFound - 1;
                            }
                        }
                    }
                    foreach (var dictionary in hashSet)
                    {
                        solrQueryResults.Remove(dictionary);
                    }
                }
                return(solrQueryResults);
            }
 public SolrSearchContext(Sitecore.ContentSearch.SolrProvider.SolrSearchIndex index, SearchSecurityOptions options = SearchSecurityOptions.EnableSecurityCheck)
     : base(index, options)
 {
     this.settings = this.Index.Locator.GetInstance <IContentSearchConfigurationSettings>();
 }