using OtpNet; using System.Globalization; namespace EnvelopeGenerator.Application.Configurations { public class TotpSmsParams { /// /// The unit is second. /// public int TotpStep { get; init; } = 90; public string Format { get; init; } = "Ihr 2FA-Passwort lautet {0}. Gültig bis {1}"; public ExpirationHandler Expiration { get; init; } = new(); 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 { public string CacheKeyFormat { get; init; } = "e{0}_r{1}_sms_code_expiration"; public string Format { get; init; } = "HH:mm:ss"; public string CultureName { get => _cultureInfo.Name; init => _cultureInfo = new(value); } private CultureInfo _cultureInfo = new("de-DE"); public CultureInfo CultureInfo => _cultureInfo; } } }