refactor(CodeGenerator): umbenannt in Authenticator
This commit is contained in:
parent
bbd03615e1
commit
808a02968b
@ -1,6 +1,6 @@
|
|||||||
namespace EnvelopeGenerator.Application.Configurations
|
namespace EnvelopeGenerator.Application.Configurations
|
||||||
{
|
{
|
||||||
public class CodeGeneratorParams
|
public class AuthenticatorParams
|
||||||
{
|
{
|
||||||
public string CharPool { get; init; } = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890123456789012345678901234567890123456789";
|
public string CharPool { get; init; } = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890123456789012345678901234567890123456789";
|
||||||
|
|
||||||
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
namespace EnvelopeGenerator.Application.Contracts
|
namespace EnvelopeGenerator.Application.Contracts
|
||||||
{
|
{
|
||||||
public interface ICodeGenerator
|
public interface IAuthenticator
|
||||||
{
|
{
|
||||||
string GenerateCode(int length);
|
string GenerateCode(int length);
|
||||||
|
|
||||||
@ -55,13 +55,13 @@ namespace EnvelopeGenerator.Application.Extensions
|
|||||||
|
|
||||||
services.ConfigureByTypeName<DispatcherParams>(config);
|
services.ConfigureByTypeName<DispatcherParams>(config);
|
||||||
services.ConfigureByTypeName<MailParams>(config);
|
services.ConfigureByTypeName<MailParams>(config);
|
||||||
services.ConfigureByTypeName<CodeGeneratorParams>(config);
|
services.ConfigureByTypeName<AuthenticatorParams>(config);
|
||||||
services.ConfigureByTypeName<TotpSmsParams>(config);
|
services.ConfigureByTypeName<TotpSmsParams>(config);
|
||||||
|
|
||||||
services.AddHttpClientService<GtxMessagingParams>(config.GetSection(nameof(GtxMessagingParams)));
|
services.AddHttpClientService<GtxMessagingParams>(config.GetSection(nameof(GtxMessagingParams)));
|
||||||
services.TryAddSingleton<ISmsSender, GTXSmsSender>();
|
services.TryAddSingleton<ISmsSender, GTXSmsSender>();
|
||||||
services.TryAddSingleton<IEnvelopeSmsHandler, EnvelopeSmsHandler>();
|
services.TryAddSingleton<IEnvelopeSmsHandler, EnvelopeSmsHandler>();
|
||||||
services.TryAddSingleton<ICodeGenerator, CodeGenerator>();
|
services.TryAddSingleton<IAuthenticator, Authenticator>();
|
||||||
services.TryAddSingleton<QRCodeGenerator>();
|
services.TryAddSingleton<QRCodeGenerator>();
|
||||||
|
|
||||||
return services;
|
return services;
|
||||||
|
|||||||
@ -7,17 +7,17 @@ using System.Text;
|
|||||||
|
|
||||||
namespace EnvelopeGenerator.Application.Services
|
namespace EnvelopeGenerator.Application.Services
|
||||||
{
|
{
|
||||||
public class CodeGenerator : ICodeGenerator
|
public class Authenticator : IAuthenticator
|
||||||
{
|
{
|
||||||
public static Lazy<CodeGenerator> LazyStatic => new(() => new CodeGenerator(Options.Create<CodeGeneratorParams>(new()), new QRCodeGenerator()));
|
public static Lazy<Authenticator> LazyStatic => new(() => new Authenticator(Options.Create<AuthenticatorParams>(new()), new QRCodeGenerator()));
|
||||||
|
|
||||||
public static CodeGenerator Static => LazyStatic.Value;
|
public static Authenticator Static => LazyStatic.Value;
|
||||||
|
|
||||||
private readonly CodeGeneratorParams _params;
|
private readonly AuthenticatorParams _params;
|
||||||
|
|
||||||
private readonly QRCodeGenerator _qrCodeGenerator;
|
private readonly QRCodeGenerator _qrCodeGenerator;
|
||||||
|
|
||||||
public CodeGenerator(IOptions<CodeGeneratorParams> options, QRCodeGenerator qrCodeGenerator)
|
public Authenticator(IOptions<AuthenticatorParams> options, QRCodeGenerator qrCodeGenerator)
|
||||||
{
|
{
|
||||||
_params = options.Value;
|
_params = options.Value;
|
||||||
_qrCodeGenerator = qrCodeGenerator;
|
_qrCodeGenerator = qrCodeGenerator;
|
||||||
@ -24,16 +24,16 @@ namespace EnvelopeGenerator.Application.Services
|
|||||||
private readonly DispatcherParams _dConfig;
|
private readonly DispatcherParams _dConfig;
|
||||||
private readonly IConfigService _configService;
|
private readonly IConfigService _configService;
|
||||||
private readonly Dictionary<string, string> _placeholders;
|
private readonly Dictionary<string, string> _placeholders;
|
||||||
private readonly ICodeGenerator _codeGenerator;
|
private readonly IAuthenticator _authenticator;
|
||||||
|
|
||||||
public EnvelopeMailService(IEmailOutRepository repository, IMapper mapper, IEmailTemplateService tempService, IEnvelopeReceiverService envelopeReceiverService, IOptions<DispatcherParams> dispatcherConfigOptions, IConfigService configService, IOptions<MailParams> mailConfig, ICodeGenerator codeGenerator) : base(repository, mapper)
|
public EnvelopeMailService(IEmailOutRepository repository, IMapper mapper, IEmailTemplateService tempService, IEnvelopeReceiverService envelopeReceiverService, IOptions<DispatcherParams> dispatcherConfigOptions, IConfigService configService, IOptions<MailParams> mailConfig, IAuthenticator authenticator) : base(repository, mapper)
|
||||||
{
|
{
|
||||||
_tempService = tempService;
|
_tempService = tempService;
|
||||||
_envRcvService = envelopeReceiverService;
|
_envRcvService = envelopeReceiverService;
|
||||||
_dConfig = dispatcherConfigOptions.Value;
|
_dConfig = dispatcherConfigOptions.Value;
|
||||||
_configService = configService;
|
_configService = configService;
|
||||||
_placeholders = mailConfig.Value.Placeholders;
|
_placeholders = mailConfig.Value.Placeholders;
|
||||||
_codeGenerator = codeGenerator;
|
_authenticator = authenticator;
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<Dictionary<string, string>> CreatePlaceholders(string? accessCode = null, EnvelopeReceiverDto? envelopeReceiverDto = null)
|
private async Task<Dictionary<string, string>> CreatePlaceholders(string? accessCode = null, EnvelopeReceiverDto? envelopeReceiverDto = null)
|
||||||
@ -167,7 +167,7 @@ namespace EnvelopeGenerator.Application.Services
|
|||||||
if (dto.Receiver.TotpExpiration is null)
|
if (dto.Receiver.TotpExpiration is null)
|
||||||
throw new ArgumentNullException(nameof(dto), $"TFA Qr Code cannot sent. Receiver.TotpExpiration is null. Envelope receiver dto is {JsonConvert.SerializeObject(dto)}");
|
throw new ArgumentNullException(nameof(dto), $"TFA Qr Code cannot sent. Receiver.TotpExpiration is null. Envelope receiver dto is {JsonConvert.SerializeObject(dto)}");
|
||||||
|
|
||||||
var totp_qr_64 = _codeGenerator.GenerateTotpQrCode(userEmail: dto.Receiver.EmailAddress, secretKey: dto.Receiver.TotpSecretkey).ToBase64String();
|
var totp_qr_64 = _authenticator.GenerateTotpQrCode(userEmail: dto.Receiver.EmailAddress, secretKey: dto.Receiver.TotpSecretkey).ToBase64String();
|
||||||
return SendAsync(dto, EmailTemplateType.TotpSecret, new()
|
return SendAsync(dto, EmailTemplateType.TotpSecret, new()
|
||||||
{
|
{
|
||||||
{"[TFA_QR_CODE]", totp_qr_64 },
|
{"[TFA_QR_CODE]", totp_qr_64 },
|
||||||
|
|||||||
@ -16,14 +16,14 @@ public class EnvelopeSmsHandler : IEnvelopeSmsHandler
|
|||||||
|
|
||||||
private readonly IDistributedCache _dCache;
|
private readonly IDistributedCache _dCache;
|
||||||
|
|
||||||
private readonly ICodeGenerator _codeGenerator;
|
private readonly IAuthenticator _authenticator;
|
||||||
|
|
||||||
public EnvelopeSmsHandler(ISmsSender sender, IOptions<TotpSmsParams> totpSmsParamsOptions, IDistributedCache distributedCache, ICodeGenerator codeGenerator)
|
public EnvelopeSmsHandler(ISmsSender sender, IOptions<TotpSmsParams> totpSmsParamsOptions, IDistributedCache distributedCache, IAuthenticator authenticator)
|
||||||
{
|
{
|
||||||
_sender = sender;
|
_sender = sender;
|
||||||
_totpSmsParams = totpSmsParamsOptions.Value;
|
_totpSmsParams = totpSmsParamsOptions.Value;
|
||||||
_dCache = distributedCache;
|
_dCache = distributedCache;
|
||||||
_codeGenerator = codeGenerator;
|
_authenticator = authenticator;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -42,12 +42,12 @@ public class EnvelopeSmsHandler : IEnvelopeSmsHandler
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
var new_expiration = DateTime.Now.AddSeconds(_totpSmsParams.TotpStep);
|
var new_expiration = DateTime.Now.AddSeconds(_totpSmsParams.TotpStep);
|
||||||
var totp = _codeGenerator.GenerateTotp(er_secret.Receiver!.TotpSecretkey!, _totpSmsParams.TotpStep);
|
var totp = _authenticator.GenerateTotp(er_secret.Receiver!.TotpSecretkey!, _totpSmsParams.TotpStep);
|
||||||
var msg = string.Format(_totpSmsParams.Format, totp, new_expiration.ToString(_totpSmsParams.Expiration.Format, _totpSmsParams.Expiration.CultureInfo));
|
var msg = string.Format(_totpSmsParams.Format, totp, new_expiration.ToString(_totpSmsParams.Expiration.Format, _totpSmsParams.Expiration.CultureInfo));
|
||||||
return (await _sender.SendSmsAsync(er_secret.PhoneNumber!, msg), new_expiration);
|
return (await _sender.SendSmsAsync(er_secret.PhoneNumber!, msg), new_expiration);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool VerifyTotp(string totpCode, string secretKey) => _codeGenerator
|
public bool VerifyTotp(string totpCode, string secretKey) => _authenticator
|
||||||
.VerifyTotp(totpCode, secretKey, _totpSmsParams.TotpStep, _totpSmsParams.TotpVerificationWindow);
|
.VerifyTotp(totpCode, secretKey, _totpSmsParams.TotpStep, _totpSmsParams.TotpVerificationWindow);
|
||||||
}
|
}
|
||||||
@ -35,11 +35,11 @@ namespace EnvelopeGenerator.Web.Controllers
|
|||||||
private readonly Cultures _cultures;
|
private readonly Cultures _cultures;
|
||||||
private readonly IEnvelopeMailService _mailService;
|
private readonly IEnvelopeMailService _mailService;
|
||||||
private readonly IEnvelopeReceiverReadOnlyService _readOnlyService;
|
private readonly IEnvelopeReceiverReadOnlyService _readOnlyService;
|
||||||
private readonly ICodeGenerator _codeGenerator;
|
private readonly IAuthenticator _authenticator;
|
||||||
private readonly IReceiverService _rcvService;
|
private readonly IReceiverService _rcvService;
|
||||||
private readonly IEnvelopeSmsHandler _envSmsHandler;
|
private readonly IEnvelopeSmsHandler _envSmsHandler;
|
||||||
|
|
||||||
public HomeController(EnvelopeOldService envelopeOldService, ILogger<HomeController> logger, IEnvelopeReceiverService envelopeReceiverService, IEnvelopeHistoryService historyService, IStringLocalizer<Resource> localizer, IConfiguration configuration, HtmlSanitizer sanitizer, Cultures cultures, IEnvelopeMailService envelopeMailService, IEnvelopeReceiverReadOnlyService readOnlyService, ICodeGenerator codeGenerator, IReceiverService receiverService, IEnvelopeSmsHandler envelopeSmsService)
|
public HomeController(EnvelopeOldService envelopeOldService, ILogger<HomeController> logger, IEnvelopeReceiverService envelopeReceiverService, IEnvelopeHistoryService historyService, IStringLocalizer<Resource> localizer, IConfiguration configuration, HtmlSanitizer sanitizer, Cultures cultures, IEnvelopeMailService envelopeMailService, IEnvelopeReceiverReadOnlyService readOnlyService, IAuthenticator authenticator, IReceiverService receiverService, IEnvelopeSmsHandler envelopeSmsService)
|
||||||
{
|
{
|
||||||
this.envelopeOldService = envelopeOldService;
|
this.envelopeOldService = envelopeOldService;
|
||||||
_envRcvService = envelopeReceiverService;
|
_envRcvService = envelopeReceiverService;
|
||||||
@ -51,7 +51,7 @@ namespace EnvelopeGenerator.Web.Controllers
|
|||||||
_mailService = envelopeMailService;
|
_mailService = envelopeMailService;
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
_readOnlyService = readOnlyService;
|
_readOnlyService = readOnlyService;
|
||||||
_codeGenerator = codeGenerator;
|
_authenticator = authenticator;
|
||||||
_rcvService = receiverService;
|
_rcvService = receiverService;
|
||||||
_envSmsHandler = envelopeSmsService;
|
_envSmsHandler = envelopeSmsService;
|
||||||
}
|
}
|
||||||
@ -204,7 +204,7 @@ namespace EnvelopeGenerator.Web.Controllers
|
|||||||
var rcv = er_secret.Receiver;
|
var rcv = er_secret.Receiver;
|
||||||
if (rcv.IsTotpSecretInvalid())
|
if (rcv.IsTotpSecretInvalid())
|
||||||
{
|
{
|
||||||
rcv.TotpSecretkey = _codeGenerator.GenerateTotpSecretKey();
|
rcv.TotpSecretkey = _authenticator.GenerateTotpSecretKey();
|
||||||
rcv.TotpExpiration = DateTime.Now.AddMonths(1);
|
rcv.TotpExpiration = DateTime.Now.AddMonths(1);
|
||||||
await _rcvService.UpdateAsync(rcv);
|
await _rcvService.UpdateAsync(rcv);
|
||||||
await _mailService.SendTFAQrCodeAsync(er_secret);
|
await _mailService.SendTFAQrCodeAsync(er_secret);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user