Commit 5f641640 authored by Michał Drzał's avatar Michał Drzał
Browse files

Added plumbing

parent 00458fcc
......@@ -3,7 +3,8 @@
public class ConfigurationConsts
{
public const string AdminConnectionStringKey = "AdminConnection";
public const string SendgridConnectionStringKey = "Sendgrid";
public const string ResourcesPath = "Resources";
}
}
\ No newline at end of file
......@@ -10,7 +10,7 @@ namespace Skoruba.IdentityServer4.STS.Identity.Configuration
public string Host { get; set; }
public string Login { get; set; }
public string Password { get; set; }
public int Port { get; set; } = 587;
public int Port { get; set; } = 587; // default smtp port
public bool UseSSL { get; set; } = true;
}
}
......@@ -14,6 +14,7 @@ using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using SendGrid;
using Serilog;
using Skoruba.IdentityServer4.STS.Identity.Configuration;
using Skoruba.IdentityServer4.STS.Identity.Configuration.Constants;
......@@ -62,6 +63,29 @@ namespace Skoruba.IdentityServer4.STS.Identity.Helpers
app.UseReferrerPolicy(options => options.NoReferrer());
}
public static void AddEmailSenders(this IServiceCollection services, IConfiguration configuration)
{
var sendgridConnectionString = configuration.GetConnectionString(ConfigurationConsts.SendgridConnectionStringKey);
var smtpConfiguration = configuration.GetSection(nameof(SmtpConfiguration)).Get<SmtpConfiguration>();
var sendgridConfiguration = configuration.GetSection(nameof(SendgridConfiguration)).Get<SendgridConfiguration>();
if (!string.IsNullOrWhiteSpace(sendgridConnectionString))
{
services.AddSingleton<ISendGridClient>(_ => new SendGridClient(sendgridConnectionString));
services.AddSingleton(sendgridConfiguration);
services.AddTransient<IEmailSender, SendgridEmailSender>();
}
else if (smtpConfiguration != null)
{
services.AddSingleton(smtpConfiguration);
services.AddTransient<IEmailSender, SmtpEmailSender>();
} else
{
services.AddSingleton<IEmailSender, EmailSender>();
}
}
public static void AddAuthenticationServices<TContext, TUserIdentity, TUserIdentityRole>(this IServiceCollection services, IHostingEnvironment hostingEnvironment, IConfiguration configuration, ILogger logger) where TContext : DbContext
where TUserIdentity : class where TUserIdentityRole : class
{
......@@ -73,7 +97,6 @@ namespace Skoruba.IdentityServer4.STS.Identity.Helpers
.AddEntityFrameworkStores<TContext>()
.AddDefaultTokenProviders();
services.AddSingleton<IEmailSender, EmailSender>();
services.Configure<IISOptions>(iis =>
{
......
......@@ -6,13 +6,13 @@ using System.Threading.Tasks;
namespace Skoruba.IdentityServer4.STS.Identity.Services
{
public class SendGridMailingService : IEmailSender
public class SendgridEmailSender : IEmailSender
{
private ISendGridClient _client;
private readonly SendgridConfiguration _configuration;
private readonly ILogger<SendGridMailingService> _logger;
private readonly ILogger<SendgridEmailSender> _logger;
public SendGridMailingService(ILogger<SendGridMailingService> logger, ISendGridClient client, SendgridConfiguration configuration)
public SendgridEmailSender(ILogger<SendgridEmailSender> logger, ISendGridClient client, SendgridConfiguration configuration)
{
_logger = logger;
_client = client;
......
......@@ -36,6 +36,7 @@ namespace Skoruba.IdentityServer4.STS.Identity
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContexts<AdminDbContext>(Configuration);
services.AddEmailSenders(Configuration);
services.AddAuthenticationServices<AdminDbContext, UserIdentity, UserIdentityRole>(Environment, Configuration, Logger);
services.AddMvcLocalization();
}
......
{
"ConnectionStrings": {
"AdminConnection": "Server=(localdb)\\mssqllocaldb;Database=IdentityServer4Admin;Trusted_Connection=True;MultipleActiveResultSets=true"
},
"Serilog": {
"MinimumLevel": "Information",
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "Log\\skoruba_admin.txt",
"rollingInterval": "Day"
}
},
{
"Name": "MSSqlServer",
"Args": {
"connectionString": "Server=(localdb)\\mssqllocaldb;Database=IdentityServer4Admin;Trusted_Connection=True;MultipleActiveResultSets=true",
"tableName": "Log",
"columnOptionsSection": {
"addStandardColumns": [ "LogEvent" ],
"removeStandardColumns": [ "Properties" ]
}
}
}
]
},
"CertificateConfiguration": {
"ConnectionStrings": {
"AdminConnection": "Server=(localdb)\\mssqllocaldb;Database=IdentityServer4Admin;Trusted_Connection=True;MultipleActiveResultSets=true"
},
"Serilog": {
"MinimumLevel": "Information",
"WriteTo": [
{
"Name": "File",
"Args": {
"path": "Log\\skoruba_admin.txt",
"rollingInterval": "Day"
}
},
{
"Name": "MSSqlServer",
"Args": {
"connectionString": "Server=(localdb)\\mssqllocaldb;Database=IdentityServer4Admin;Trusted_Connection=True;MultipleActiveResultSets=true",
"tableName": "Log",
"columnOptionsSection": {
"addStandardColumns": [ "LogEvent" ],
"removeStandardColumns": [ "Properties" ]
}
}
}
]
},
"CertificateConfiguration": {
"UseTemporarySigningKeyForDevelopment": true,
"UseTemporarySigningKeyForDevelopment": true,
"UseSigningCertificateThumbprint": false,
"SigningCertificateThumbprint": "",
"UseSigningCertificateThumbprint": false,
"SigningCertificateThumbprint": "",
"UseSigningCertificatePfxFile": false,
"SigningCertificatePfxFilePath": "",
"SigningCertificatePfxFilePassword": "",
"UseSigningCertificatePfxFile": false,
"SigningCertificatePfxFilePath": "",
"SigningCertificatePfxFilePassword": "",
"UseValidationCertificatePfxFile": false,
"ValidationCertificatePfxFilePath": "",
"ValidationCertificatePfxFilePassword": "",
"UseValidationCertificatePfxFile": false,
"ValidationCertificatePfxFilePath": "",
"ValidationCertificatePfxFilePassword": "",
"UseValidationCertificateThumbprint": false,
"ValidationCertificateThumbprint": ""
},
"ExternalProvidersConfiguration": {
"UseGitHubProvider": false,
"GitHubClientId": "",
"GitHubClientSecret": ""
}
"UseValidationCertificateThumbprint": false,
"ValidationCertificateThumbprint": ""
},
"ExternalProvidersConfiguration": {
"UseGitHubProvider": false,
"GitHubClientId": "",
"GitHubClientSecret": ""
},
"SmtpConfiguration": {
"Host": "",
"Login": "",
"Password": ""
}
}
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment