Add existence checks to mail cooldown system

This commit is contained in:
Slendy 2022-09-25 16:25:32 -05:00
parent 8964175311
commit 88802ec52f
No known key found for this signature in database
GPG key ID: 7288D68361B91428

View file

@ -44,14 +44,29 @@ public class SendVerificationEmailPage : BaseLayout
for (int i = recentlySentEmail.Count - 1; i >= 0; i--)
{
KeyValuePair<int, long> entry = recentlySentEmail.ElementAt(i);
if (TimeHelper.TimestampMillis > recentlySentEmail[user.UserId]) recentlySentEmail.TryRemove(entry.Key, out _);
bool valueExists = recentlySentEmail.TryGetValue(entry.Key, out long timestamp);
if (!valueExists)
{
recentlySentEmail.TryRemove(entry.Key, out _);
continue;
}
if (TimeHelper.TimestampMillis > timestamp) recentlySentEmail.TryRemove(entry.Key, out _);
}
if (recentlySentEmail.ContainsKey(user.UserId) && recentlySentEmail[user.UserId] > TimeHelper.TimestampMillis)
if (recentlySentEmail.ContainsKey(user.UserId))
{
bool valueExists = recentlySentEmail.TryGetValue(user.UserId, out long timestamp);
if (!valueExists)
{
recentlySentEmail.TryRemove(user.UserId, out _);
}
else if (timestamp > TimeHelper.TimestampMillis)
{
this.Success = true;
return this.Page();
}
}
string? existingToken = await this.Database.EmailVerificationTokens.Where(v => v.UserId == user.UserId).Select(v => v.EmailToken).FirstOrDefaultAsync();
if(existingToken != null)