📝 create documentation for user provision and authentication
This commit is contained in:
@ -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);
|
||||
|
||||
Reference in New Issue
Block a user