mirror of
https://github.com/vernu/textbee.git
synced 2026-05-19 14:02:04 -04:00
chore(api): limit max 5 pw reset requests per day
This commit is contained in:
@@ -160,6 +160,20 @@ export class AuthService {
|
||||
}
|
||||
}
|
||||
|
||||
// Check if user has requested password reset more than 5 times in the last 24 hours
|
||||
const twentyFourHoursAgo = new Date(Date.now() - 24 * 60 * 60 * 1000)
|
||||
const resetCount = await this.passwordResetModel.countDocuments({
|
||||
user: user._id,
|
||||
createdAt: { $gte: twentyFourHoursAgo }
|
||||
})
|
||||
|
||||
if (resetCount >= 5) {
|
||||
throw new HttpException(
|
||||
{ error: 'Too many password reset requests. Please try again later.' },
|
||||
HttpStatus.TOO_MANY_REQUESTS
|
||||
)
|
||||
}
|
||||
|
||||
const otp = Math.floor(100000 + Math.random() * 900000).toString()
|
||||
const expiresAt = new Date(Date.now() + 20 * 60 * 1000)
|
||||
|
||||
@@ -169,7 +183,7 @@ export class AuthService {
|
||||
otp: hashedOtp,
|
||||
expiresAt,
|
||||
})
|
||||
passwordReset.save()
|
||||
await passwordReset.save()
|
||||
|
||||
const resetLink = `${process.env.FRONTEND_URL || 'https://textbee.dev'}/reset-password?email=${encodeURIComponent(user.email)}&otp=${otp}`
|
||||
|
||||
|
||||
Reference in New Issue
Block a user