fix(2FA): backup code double-use race condition

This commit is contained in:
Rudy B. committed 2026-04-25 18:51:03 +02:00
1 parent b4bb9cc727
commit 3e165a8c6f
1 file changed
+12 -2
+12 -2
View File
@@ -81,10 +81,20 @@ export async function POST(request: Request) {
});
}
await prisma.client.twoFactorBackupCode.update({
where: { id: unusedCodes[matchIndex].id },
const consumed = await prisma.client.twoFactorBackupCode.updateMany({
where: { id: unusedCodes[matchIndex].id, used: false },
data: { used: true },
});
if (consumed.count === 0) {
const { lockedUntil } = await recordFailedAttempt(userId);
return badRequest({
code: 'two-factor-error-invalid-backup-code',
message: 'Invalid backup code',
...(lockedUntil && { lockedUntil }),
});
}
await resetRateLimit(userId);
} else {
const { token } = body;