edit:module:user:*update | add refresh jwt token after user doing chances

This commit is contained in:
rafiarrafif
2025-06-20 08:20:39 +07:00
parent 62c527b073
commit eb7a1c1454
3 changed files with 39 additions and 8 deletions

View File

@ -1,9 +1,18 @@
import { ErrorForwarder } from "../../../helpers/error/instances/forwarder";
import { UserHeaderInformation } from "../../../helpers/http/userHeader/getUserHeaderInformation/types"; import { UserHeaderInformation } from "../../../helpers/http/userHeader/getUserHeaderInformation/types";
import { createUserSessionService } from "../../userSession/services/createUserSession.service"; import { createUserSessionService } from "../../userSession/services/createUserSession.service";
export const loginFromSystemService = ( export const loginFromSystemService = async (
userId: string, userId: string,
userHeaderInfo: UserHeaderInformation userHeaderInfo: UserHeaderInformation
) => { ) => {
// const userSession = await createUserSessionService() try {
const userSession = await createUserSessionService({
userId,
userHeaderInformation: userHeaderInfo,
});
return userSession;
} catch (error) {
ErrorForwarder(error);
}
}; };

View File

@ -7,6 +7,10 @@ import { mainErrorHandler } from "../../../helpers/error/handler";
import { Prisma } from "@prisma/client"; import { Prisma } from "@prisma/client";
import { editUserService } from "../services/editUser.service"; import { editUserService } from "../services/editUser.service";
import { getCookie } from "../../../helpers/http/userHeader/cookies/getCookies"; import { getCookie } from "../../../helpers/http/userHeader/cookies/getCookies";
import { getUserHeaderInformation } from "../../../helpers/http/userHeader/getUserHeaderInformation";
import { setCookie } from "../../../helpers/http/userHeader/cookies/setCookies";
import { COOKIE_KEYS } from "../../../constants/cookie.keys";
import { jwtEncode } from "../../../helpers/http/jwt/encode";
export const editUserController = async ( export const editUserController = async (
ctx: Context & { ctx: Context & {
@ -19,8 +23,18 @@ export const editUserController = async (
if (!auth_token) if (!auth_token)
return returnErrorResponse(ctx.set, 401, "User Unauthenticated"); return returnErrorResponse(ctx.set, 401, "User Unauthenticated");
const editUser = await editUserService(auth_token, ctx.body); const userHeaderInfo = getUserHeaderInformation(ctx);
return editUser;
const newUserData = await editUserService(
auth_token,
userHeaderInfo,
ctx.body
);
const newJwtToken = await jwtEncode(newUserData);
setCookie(ctx.set, COOKIE_KEYS.AUTH, newJwtToken);
return returnWriteResponse(ctx.set, 201, "User data updated", newJwtToken);
} catch (error) { } catch (error) {
return mainErrorHandler(ctx.set, error); return mainErrorHandler(ctx.set, error);
} }

View File

@ -4,9 +4,13 @@ import { AppError } from "../../../helpers/error/instances/app";
import { ErrorForwarder } from "../../../helpers/error/instances/forwarder"; import { ErrorForwarder } from "../../../helpers/error/instances/forwarder";
import { updateUserRepo } from "../repositories/updateUser.repository"; import { updateUserRepo } from "../repositories/updateUser.repository";
import { checkUserEmailAndUsernameAvailabillityService } from "./checkUserEmailAndUsernameAvailabillity.service"; import { checkUserEmailAndUsernameAvailabillityService } from "./checkUserEmailAndUsernameAvailabillity.service";
import { logoutService } from "../../auth/services/logout.service";
import { loginFromSystemService } from "../../auth/services/loginFromSystem.service";
import { UserHeaderInformation } from "../../../helpers/http/userHeader/getUserHeaderInformation/types";
export const editUserService = async ( export const editUserService = async (
cookie: string, cookie: string,
userHeaderInfo: UserHeaderInformation,
payload: Prisma.UserUpdateInput payload: Prisma.UserUpdateInput
) => { ) => {
try { try {
@ -55,11 +59,15 @@ export const editUserService = async (
}; };
// Update the user in the database, use username from the JWT session to find the user // Update the user in the database, use username from the JWT session to find the user
const updateUser = await updateUserRepo( await updateUserRepo(jwtSession.user.username, fieldsToUpdate);
jwtSession.user.username,
fieldsToUpdate await logoutService(cookie);
const newUserSession = await loginFromSystemService(
jwtSession.userId,
userHeaderInfo
); );
return updateUser;
return newUserSession;
} catch (error) { } catch (error) {
ErrorForwarder(error, 500, "Internal server error"); ErrorForwarder(error, 500, "Internal server error");
} }