📝 create documentation for user provision and authentication
This commit is contained in:
@ -17,12 +17,6 @@ export const OAuthUserProvisionService = async (
|
||||
providerRawCallback: unknown,
|
||||
userHeaderInfo: UserHeaderInformation
|
||||
) => {
|
||||
/**
|
||||
* Create auth session if user already exist,
|
||||
* create user account and give them auth session if not
|
||||
*
|
||||
* This is just example!!
|
||||
*/
|
||||
try {
|
||||
const providerId = `${payload.providerName}_${payload.openId}`;
|
||||
const findUserResult = (await findUserService({
|
||||
@ -34,7 +28,12 @@ export const OAuthUserProvisionService = async (
|
||||
if (findUserResult) {
|
||||
return await createUserSessionService(findUserResult.id, userHeaderInfo);
|
||||
} else {
|
||||
return "Not Found";
|
||||
/**
|
||||
* === TODO ===
|
||||
* If the user is not found,
|
||||
* create a new one with the data obtained from the OAuth provider,
|
||||
* then create a user session and authenticate it immediately.
|
||||
*/
|
||||
}
|
||||
} catch (error) {
|
||||
ErrorForwarder(error);
|
||||
|
||||
@ -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