using OtpNet;
using System.Globalization;
namespace EnvelopeGenerator.Application.Configurations;
///
///
///
public class TotpSmsParams
{
///
/// The unit is second.
///
public int TotpStep { get; init; } = 90;
///
/// Default value is 'Ihr 2FA-Passwort lautet {0}. Gültig bis {1}'
///
public string Format { get; init; } = "Ihr 2FA-Passwort lautet {0}. Gültig bis {1}";
///
///
///
public ExpirationHandler Expiration { get; init; } = new();
///
/// Default value is VerificationWindow.RfcSpecifiedNetworkDelay
///
public VerificationWindow? TotpVerificationWindow { get; private init; } = VerificationWindow.RfcSpecifiedNetworkDelay;
private IEnumerable? _tvwParams;
///
///
///
public IEnumerable? TotpVerificationWindowParams
{
get => _tvwParams;
init
{
_tvwParams = value;
if(_tvwParams is not null)
TotpVerificationWindow = new(previous: _tvwParams.ElementAtOrDefault(0), future: _tvwParams.ElementAtOrDefault(0));
}
}
///
///
///
public class ExpirationHandler
{
///
/// Default value is 'e{0}_r{1}_sms_code_expiration'
///
public string CacheKeyFormat { get; init; } = "e{0}_r{1}_sms_code_expiration";
///
/// Default value is HH:mm:ss
///
public string Format { get; init; } = "HH:mm:ss";
///
/// Default value is 'de-DE'
///
public string CultureName
{
get => _cultureInfo.Name;
init => _cultureInfo = new(value);
}
///
/// Default value is 'de-DE'
///
private CultureInfo _cultureInfo = new("de-DE");
///
/// Default value is 'de-DE'
///
public CultureInfo CultureInfo => _cultureInfo;
}
}