feat: integration user lock flow to frontend

This commit is contained in:
Sheen Capadngan
2024-05-22 22:51:20 +08:00
parent 41d72d5dc6
commit e3dae9d498
5 changed files with 34 additions and 25 deletions
@@ -49,6 +49,7 @@ export const registerUserRouter = async (server: FastifyZodProvider) => {
await server.services.user.unlockUser(req.params.userId, req.query.token);
} catch (err) {
logger.error(`User unlock failed for ${req.params.userId}`);
logger.error(err);
}
return res.redirect(`${appCfg.SITE_URL}/login`);
}
+1 -1
View File
@@ -59,7 +59,7 @@ export const enforceUserLockStatus = (isLocked: boolean, temporaryLockDateEnd?:
if (timeDiff < 0)
throw new UnauthorizedError({
name: "User Locked",
message: `User is locked due to multiple failed login attempts. Try logging in again after ${Math.round(
message: `User is locked due to multiple failed login attempts. Try again after ${Math.round(
(-1 * timeDiff) / 1000
)} seconds.`
});
+1 -1
View File
@@ -38,7 +38,7 @@ export const processFailedMfaAttempt = async (userId: string, userDAL: Pick<TUse
const progressiveDelaysInMins = [5, 30, 60];
// lock user when failed attempt exceeds threshold
if (user.consecutiveFailedMfaAttempts > PROGRESSIVE_DELAY_INTERVAL * progressiveDelaysInMins.length) {
if (user.consecutiveFailedMfaAttempts >= PROGRESSIVE_DELAY_INTERVAL * (progressiveDelaysInMins.length + 1)) {
return (
await tx(TableName.Users)
.where("id", userId)