📝 create documentation for user provision and authentication

This commit is contained in:
2025-08-13 11:13:19 +07:00
parent 1ebcc8d21d
commit c1adb767e7
2 changed files with 11 additions and 7 deletions

View File

@ -10,9 +10,11 @@ export const createUserSessionService = async (
userHeaderInfo: UserHeaderInformation
) => {
try {
// set the date when the token will expire
const generateTokenExpirationDate =
Date.now() + Number(process.env.SESSION_EXPIRE) * 1000;
// construct all data to fit the user session input query
const constructData = {
userId,
isAuthenticated: true,
@ -23,8 +25,10 @@ export const createUserSessionService = async (
validUntil: new Date(generateTokenExpirationDate),
} as Prisma.UserSessionUncheckedCreateInput;
// insert user session into database
const createUserSession = await createUserSessionRepository(constructData);
// caching user session data into Redis
const createRedisKey = `${process.env.APP_NAME}:users:${userId}:sessions:${createUserSession.id}`;
await redis.hset(createRedisKey, {
userId,
@ -33,6 +37,7 @@ export const createUserSessionService = async (
});
await redis.expire(createRedisKey, Number(process.env.SESSION_EXPIRE));
// create a jwt token with a payload containing the created user session, then return jwt
return jwtEncode(createUserSession);
} catch (error) {
ErrorForwarder(error);