wr: jwt 남은시간

This commit is contained in:
2026-04-10 18:01:12 +09:00
parent 6f0f03f83b
commit 2de065ceb0
4 changed files with 259 additions and 1 deletions
+41
View File
@@ -1,4 +1,6 @@
import { DEV_URL_FO, DEV_URL_WR, LOCAL_URL } from "../config/";
import { CLAIM_NAME } from "@/src/shared/config";
import { tokenManager } from "@/src/entities/auth/lib/token-manager";
export const fetchType = {
COMMON: "common",
@@ -7,6 +9,28 @@ export const fetchType = {
CS: "CS",
};
const LOGIN_PAGE_URL =
process.env.NEXT_PUBLIC_CM_LOGIN_PAGE_URL || "/auth/login";
const handleUnauthorizedResponse = () => {
if (typeof window === "undefined") return;
const remainingMs = tokenManager.getRemainingMsFromToken(CLAIM_NAME);
const isExpired = remainingMs === null || remainingMs <= 0;
if (!isExpired) return;
tokenManager.clearAuthToken();
const isLoginPage =
window.location.pathname === "/auth/login" ||
window.location.pathname.startsWith("/auth/login/");
if (!isLoginPage) {
window.location.assign(LOGIN_PAGE_URL);
}
};
export const getFetch = async (type: string, url: string) => {
const div =
type === fetchType.COMMON
@@ -24,6 +48,10 @@ export const getFetch = async (type: string, url: string) => {
},
});
if (response.status === 401) {
handleUnauthorizedResponse();
}
if (!response.ok) {
console.log(`오류 발생: ${response.status}`);
}
@@ -72,6 +100,10 @@ export const getFetchWithCount = async (type: string, url: string) => {
},
});
if (response.status === 401) {
handleUnauthorizedResponse();
}
if (!response.ok) {
console.log(`오류 발생: ${response.status}`);
}
@@ -114,6 +146,9 @@ export const postFectch = async (url: string, params: any, type?: string) => {
},
body: JSON.stringify(params),
});
if (response.status === 401) {
handleUnauthorizedResponse();
}
if (!response.ok) {
throw new Error(`오류 발생: ${response.status}`);
}
@@ -138,6 +173,9 @@ export const putFectch = async (url: string, params: any, type?: string) => {
},
body: JSON.stringify(params),
});
if (response.status === 401) {
handleUnauthorizedResponse();
}
if (!response.ok) {
throw new Error(`오류 발생: ${response.status}`);
}
@@ -166,6 +204,9 @@ export const deleteFectch = async (
},
body: params ? JSON.stringify(params) : undefined,
});
if (response.status === 401) {
handleUnauthorizedResponse();
}
if (!response.ok) {
// 에러 응답 본문 파싱
const errorText = await response.text();