refactor(CodeGenerator): umbenannt in Authenticator

This commit is contained in:
Developer 02 2025-02-03 09:58:57 +01:00
parent bbd03615e1
commit 808a02968b
7 changed files with 22 additions and 22 deletions

View File

@ -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";

View File

@ -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);

View File

@ -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;

View File

@ -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;

View File

@ -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 },

View File

@ -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);
} }

View File

@ -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);