diff --git a/src/modules/userSession/repositories/createUserSession.repository.ts b/src/modules/userSession/repositories/createUserSession.repository.ts index 4779c5e..b23aea6 100644 --- a/src/modules/userSession/repositories/createUserSession.repository.ts +++ b/src/modules/userSession/repositories/createUserSession.repository.ts @@ -8,6 +8,19 @@ export const createUserSessionRepository = async ( try { return await userSessionModel.create({ data, + include: { + user: { + omit: { + password: true, + providerToken: true, + providerPayload: true, + deletedAt: true, + }, + include: { + preference: true, + }, + }, + }, }); } catch (error) { ErrorForwarder(error); diff --git a/src/modules/userSession/services/createUserSession.service.ts b/src/modules/userSession/services/createUserSession.service.ts index daf878f..303e22a 100644 --- a/src/modules/userSession/services/createUserSession.service.ts +++ b/src/modules/userSession/services/createUserSession.service.ts @@ -2,6 +2,8 @@ import { Prisma } from "@prisma/client"; import { UserHeaderInformation } from "../../../helpers/http/userHeader/getUserHeaderInformation/types"; import { ErrorForwarder } from "../../../helpers/error/instances/forwarder"; import { createUserSessionRepository } from "../repositories/createUserSession.repository"; +import { redis } from "../../../utils/databases/redis/connection"; +import { jwtEncode } from "../../../helpers/http/jwt/encode"; export const createUserSessionService = async ( userId: string, @@ -9,7 +11,7 @@ export const createUserSessionService = async ( ) => { try { const generateTokenExpirationDate = - Date.now() + Number(process.env.SESSION_EXPIRE!) * 1000; + Date.now() + Number(process.env.SESSION_EXPIRE) * 1000; const constructData = { userId, @@ -21,7 +23,17 @@ export const createUserSessionService = async ( validUntil: new Date(generateTokenExpirationDate), } as Prisma.UserSessionUncheckedCreateInput; - return createUserSessionRepository(constructData); + const createUserSession = await createUserSessionRepository(constructData); + + const createRedisKey = `${process.env.APP_NAME}:users:${userId}:sessions:${createUserSession.id}`; + await redis.hset(createRedisKey, { + userId, + sessionId: createUserSession.id, + validUntil: createUserSession.validUntil, + }); + await redis.expire(createRedisKey, Number(process.env.SESSION_EXPIRE)); + + return jwtEncode(createUserSession); } catch (error) { ErrorForwarder(error); }