58 lines
1.8 KiB
C#
58 lines
1.8 KiB
C#
public class PhoneClaimCodeProviderService
|
|
{
|
|
private Dictionary<string, string> _phoneClaimCodes;
|
|
private Dictionary<string, string> _phoneClaimNumbers;
|
|
|
|
public PhoneClaimCodeProviderService()
|
|
{
|
|
_phoneClaimCodes = new Dictionary<string, string>();
|
|
_phoneClaimNumbers = new Dictionary<string, string>();
|
|
}
|
|
|
|
private static Random random = new Random();
|
|
|
|
private static string RandomString(int length)
|
|
{
|
|
const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
|
return new string(Enumerable.Repeat(chars, length)
|
|
.Select(s => s[random.Next(s.Length)]).ToArray());
|
|
}
|
|
|
|
public void GenerateClaimCodeForUserAndNumber(string username, string phoneNumber)
|
|
{
|
|
var generatedCode = string.Empty;
|
|
if (IsCodeGeneratedForUser(username))
|
|
{
|
|
generatedCode = _phoneClaimCodes[username];
|
|
}
|
|
else
|
|
{
|
|
generatedCode = RandomString(6);
|
|
_phoneClaimCodes[username] = generatedCode;
|
|
_phoneClaimNumbers[username] = phoneNumber;
|
|
}
|
|
|
|
SignalIntegration.Instance.SendMessageToUserAsync("Your phone number validation code is: " + generatedCode, phoneNumber);
|
|
}
|
|
|
|
public string ValidateClaimCodeForUser(string code, string username)
|
|
{
|
|
var result = false;
|
|
result = _phoneClaimCodes[username] == code;
|
|
|
|
if (result)
|
|
{
|
|
_phoneClaimCodes.Remove(username);
|
|
var number = _phoneClaimNumbers[username];
|
|
_phoneClaimNumbers.Remove(username);
|
|
return number;
|
|
}
|
|
|
|
return string.Empty;
|
|
}
|
|
|
|
public bool IsCodeGeneratedForUser(string username)
|
|
{
|
|
return _phoneClaimCodes.ContainsKey(username);
|
|
}
|
|
} |