add step in auth verification

This commit is contained in:
rafiarrafif
2025-05-25 14:10:25 +07:00
parent d0e4e1e835
commit 03fd0531af
15 changed files with 237 additions and 23 deletions

View File

@ -0,0 +1,19 @@
import { Prisma } from "@prisma/client";
import { AppError } from "../../../helpers/error/instances/app";
import { redis } from "../../../utils/databases/redis/connection";
export const storeUserSessionToCacheRepo = async (
userSession: Prisma.UserSessionUncheckedCreateInput,
timeExpires: number
) => {
try {
await redis.set(
`${process.env.app_name}:users:${userSession.userId}:sessions:${userSession.id}`,
String(userSession.validUntil),
"EX",
timeExpires
);
} catch (error) {
throw new AppError(401, "Failed to store user session to cache");
}
};

View File

@ -1,6 +1,6 @@
import { createUserSessionServiceParams } from "../userSession.types";
import { redis } from "../../../utils/databases/redis/connection";
import { createUserSessionRepo } from "../repositories/createUserSession.repository";
import { createUserSessionRepo } from "../repositories/insertUserSessionToDB.repository";
import { storeUserSessionToCacheRepo } from "../repositories/storeUserSessionToCache.repository";
export const createUserSessionService = async (
data: createUserSessionServiceParams
@ -16,12 +16,8 @@ export const createUserSessionService = async (
validUntil: new Date(new Date().getTime() + sessionLifetime * 1000),
});
await redis.set(
`${process.env.app_name}:users:${data.userId}:sessions:${newUserSession.id}`,
String(newUserSession.validUntil),
"EX",
Number(process.env.SESSION_EXPIRE!)
);
const timeExpires = Number(process.env.SESSION_EXPIRE!);
await storeUserSessionToCacheRepo(newUserSession, timeExpires);
return newUserSession;
} catch (error) {

View File

@ -0,0 +1,15 @@
import { Prisma } from "@prisma/client";
import { AppError } from "../../../helpers/error/instances/app";
import { storeUserSessionToCacheRepo } from "../repositories/storeUserSessionToCache.repository";
export const storeUserSessionToCacheService = async (
userSession: Prisma.UserSessionUncheckedCreateInput,
timeExpires: number
) => {
try {
await storeUserSessionToCacheRepo(userSession, timeExpires);
return;
} catch (error) {
throw new AppError(401, "Failed to store user session to cache");
}
};