pull/8554/head
maliming 5 years ago
parent 7d07b2ad5e
commit 8565c4f052

@ -21,25 +21,7 @@ namespace Volo.Docs.Documents.FullSearch.Elastic
{
var node = new Uri(Configuration["ElasticSearch:Url"]);
var settings = new ConnectionSettings(node).DefaultIndex(Options.IndexName);
Authenticate(settings);
return new ElasticClient(settings);
}
protected virtual void Authenticate(ConnectionSettings connectionSettings)
{
switch (Options.AuthenticationMode)
{
case DocsElasticSearchOptions.ElasticSearchAuthenticationMode.Basic:
var basicAuth = Options.BasicAuthentication;
connectionSettings.BasicAuthentication(basicAuth.Username, basicAuth.Password);
break;
case DocsElasticSearchOptions.ElasticSearchAuthenticationMode.ApiKey:
var apiKeyAuth = Options.ApiKeyAuthentication;
connectionSettings.BasicAuthentication(apiKeyAuth.Id, apiKeyAuth.ApiKey);
break;
}
return new ElasticClient(Options.Authenticate(settings));
}
}
}
}

@ -1,8 +0,0 @@
namespace Volo.Docs.Documents.FullSearch.Elastic
{
public class DocsElasticSearchApiKeyAuthenticationOptions
{
public string Id { get; set; }
public string ApiKey { get; set; }
}
}

@ -1,8 +0,0 @@
namespace Volo.Docs.Documents.FullSearch.Elastic
{
public class DocsElasticSearchBasicAuthenticationOptions
{
public string Username { get; set; }
public string Password { get; set; }
}
}

@ -1,28 +1,53 @@
namespace Volo.Docs.Documents.FullSearch.Elastic
using System;
using Nest;
using Volo.Abp;
namespace Volo.Docs.Documents.FullSearch.Elastic
{
public class DocsElasticSearchOptions
{
public bool Enable { get; set; }
public string IndexName { get; set; }
protected Action<ConnectionSettings> AuthenticationAction { get; set; }
public DocsElasticSearchOptions()
{
Enable = false;
IndexName = "abp_documents";
AuthenticationMode = ElasticSearchAuthenticationMode.None;
}
public bool Enable { get; set; }
public DocsElasticSearchOptions UseBasicAuthentication(string username, string password)
{
Check.NotNullOrEmpty(username, nameof(username));
Check.NotNullOrEmpty(password, nameof(password));
public string IndexName { get; set; }
AuthenticationAction = settings =>
{
settings.BasicAuthentication(username, password);
};
public ElasticSearchAuthenticationMode AuthenticationMode { get; set; }
return this;
}
public DocsElasticSearchBasicAuthenticationOptions BasicAuthentication { get; set; }
public DocsElasticSearchApiKeyAuthenticationOptions ApiKeyAuthentication { get; set; }
public DocsElasticSearchOptions UseApiKeyAuthentication(string id, string apiKey)
{
Check.NotNullOrEmpty(id, nameof(id));
Check.NotNullOrEmpty(apiKey, nameof(apiKey));
AuthenticationAction = settings =>
{
settings.ApiKeyAuthentication(id, apiKey);
};
return this;
}
public enum ElasticSearchAuthenticationMode
public ConnectionSettings Authenticate(ConnectionSettings connectionSettings)
{
None = 0,
Basic = 1,
ApiKey = 2
AuthenticationAction?.Invoke(connectionSettings);
return connectionSettings;
}
}
}

Loading…
Cancel
Save