shoc-backend/SeaHaven.Services/Interfaces/IPasswordResetEmailQueue.cs
Alexandre Brandizzi 77a10e38ca fix(auth): cap reset abuse per account, key code hashes, send reset email off the request path
- Forgot Password is limited to 3 codes an hour and 10 a day per email, and
  an account gets 10 failed code checks a day across every code it is sent,
  so new client addresses and new codes no longer buy more guesses. Refused
  requests answer exactly like accepted ones.
- The reset email is queued to a background sender, and unregistered
  addresses store a row no code can match, so both paths do the same work
  and return without waiting on the mail provider. Each request also clears
  expired codes.
- Code hashes are HMAC-SHA256 under a key derived with HKDF from the JWT
  signing secret; rows in the previous unkeyed format stop matching.
- Email and code are read only from the JSON body.
2026-09-25 13:00:03 -03:00

13 lines
499 B
C#

namespace SeaHaven.Services.Interfaces
{
/// <summary>
/// Hands a password reset email to a background sender, so the request that asked
/// for it does not wait on the mail provider and cannot be timed against one that
/// sent nothing.
/// </summary>
public interface IPasswordResetEmailQueue
{
/// <summary>Returns false when the queue is full and the email was dropped.</summary>
bool TryEnqueue(string emailTo, string subject, string body);
}
}