+
diff --git a/apps/st/src/entities/auth/api/auth-service.ts b/apps/st/src/entities/auth/api/auth-service.ts
index 198e69c81..c79034a70 100644
--- a/apps/st/src/entities/auth/api/auth-service.ts
+++ b/apps/st/src/entities/auth/api/auth-service.ts
@@ -5,17 +5,12 @@ import {
ENDPOINT,
} from "@/shared/config";
import { getCookie } from "@/shared/lib";
-import {
- type AuthPayload,
- type AuthService,
- getRemainingMs,
-} from "@common/auth";
+import { type AuthPayload, type AuthService } from "@common/auth";
import { clearDeviceId, getOrCreateDeviceId } from "../lib/device-id";
import {
clearRefreshTimer,
setToken,
- setupRefreshTimer,
tokenManager,
} from "../lib/token-manager";
@@ -48,10 +43,10 @@ async function login(payload: AuthPayload): Promise {
setToken(CLAIM_NAME, accessToken);
setToken(AUTH_USER_ID, tokenId);
- const remainingMs = getRemainingMs(accessToken);
- if (remainingMs > 0) {
- setupRefreshTimer(silentRefresh, remainingMs);
- }
+ // const remainingMs = getRemainingMs(accessToken);
+ // if (remainingMs > 0) {
+ // setupRefreshTimer(silentRefresh, remainingMs);
+ // }
}
async function silentRefresh(): Promise {
@@ -83,10 +78,10 @@ async function silentRefresh(): Promise {
setToken(CLAIM_NAME, accessToken);
setToken(AUTH_USER_ID, tokenId);
- const remainingMs = getRemainingMs(accessToken);
- if (remainingMs > 0) {
- setupRefreshTimer(silentRefresh, remainingMs);
- }
+ // const remainingMs = getRemainingMs(accessToken);
+ // if (remainingMs > 0) {
+ // setupRefreshTimer(silentRefresh, remainingMs);
+ // }
} catch (error) {
console.error(
`[silentRefresh] Failed at ${new Date().toISOString()}`,
diff --git a/apps/wr/.env.local b/apps/wr/.env.local
index d60b49979..b123d7cc4 100644
--- a/apps/wr/.env.local
+++ b/apps/wr/.env.local
@@ -26,3 +26,4 @@ NEXT_PUBLIC_HASUDOINFO_IN = https://www.hasudoinfo.or.kr
NEXT_PUBLIC_FINDADRESS_URL = https://business.juso.go.kr/addrlink/addrLinkApi.do
NEXT_PRIVATE_WR_ADDRESS_KEY = devU01TX0FVVEgyMDI1MDgyNTEwMzkwNDExNjEwNTM=
REACT_EDITOR = atom
+NEXT_PUBLIC_COOKIE_COMAIN=.mind-one.co.kr
\ No newline at end of file
diff --git a/apps/wr/.env.mindone b/apps/wr/.env.mindone
index d6ccb9621..a37bd3d2e 100644
--- a/apps/wr/.env.mindone
+++ b/apps/wr/.env.mindone
@@ -21,3 +21,4 @@ NEXT_PUBLIC_HASUDOINFO = https://www.hasudoinfo.or.kr
NEXT_PUBLIC_HASUDOINFO_IN = https://www.hasudoinfo.or.kr
NEXT_PUBLIC_FINDADRESS_URL=https://business.juso.go.kr/addrlink/addrLinkApi.do
NEXT_PRIVATE_WR_ADDRESS_KEY = devU01TX0FVVEgyMDI1MDgyNTEwMzkwNDExNjEwNTM=
+NEXT_PUBLIC_COOKIE_COMAIN=.mind-one.co.kr
\ No newline at end of file
diff --git a/apps/wr/app/(map-layout)/layout.tsx b/apps/wr/app/(map-layout)/layout.tsx
index b6f52c19c..ee7321d7b 100644
--- a/apps/wr/app/(map-layout)/layout.tsx
+++ b/apps/wr/app/(map-layout)/layout.tsx
@@ -1,9 +1,11 @@
"use client";
import type { MenuItem } from "@common/components/api";
import { NoFooterLayout } from "@common/components/ui";
+import { useQueryClient } from "@tanstack/react-query";
import { usePathname,useRouter } from "next/navigation";
import { useMenuStore } from "@/src/shared/lib";
import { useWrStore } from "../store";
+import { authService } from "@/src/entities/auth";
export default function MapLayout({
children,
@@ -14,6 +16,7 @@ export default function MapLayout({
const setCurrentMenuInfo = useMenuStore((state) => state.setCurrentMenuInfo);
const router = useRouter();
const pathname = usePathname();
+ const queryClient = useQueryClient();
const changeMenu = (path: MenuItem) => {
setCurrentMenuInfo(path);
@@ -21,7 +24,12 @@ export default function MapLayout({
router.push(path.urlPath);
};
return (
-
+
{children}
);
diff --git a/packages/common/components/src/lib/use-session-extend-confirm.ts b/packages/common/components/src/lib/use-session-extend-confirm.ts
index 35e210e34..30c08584a 100644
--- a/packages/common/components/src/lib/use-session-extend-confirm.ts
+++ b/packages/common/components/src/lib/use-session-extend-confirm.ts
@@ -15,14 +15,6 @@ interface UseSessionExtendConfirmOptions {
const DEFAULT_MESSAGE = "로그인을 연장하시겠습니까?";
-function formatRemainingMs(remainingMs: number): string {
- const totalSeconds = Math.floor(remainingMs / 1000);
- const minutes = Math.floor((totalSeconds % 3600) / 60);
- const seconds = totalSeconds % 60;
-
- return `${minutes}분 ${seconds}초`;
-}
-
function useSessionExtendConfirm({
enabled,
getAccessToken,
@@ -79,10 +71,8 @@ function useSessionExtendConfirm({
void showConfirm();
return;
}
+
confirmTimerRef.current = setTimeout(() => {
- console.log(
- `>>>>>>>>>>>>>>>>>>>> ${formatRemainingMs(confirmMs)} 후 로그인 연장 팝업 표시 <<<<<<<<<<<<<<<<<<<<`,
- );
void showConfirm();
}, confirmMs);
}, [message, confirm, getAccessToken, silentRefresh, declineSessionExtend]);
diff --git a/packages/common/components/src/ui/header/index.tsx b/packages/common/components/src/ui/header/index.tsx
index 457e7d819..4c8c117bf 100644
--- a/packages/common/components/src/ui/header/index.tsx
+++ b/packages/common/components/src/ui/header/index.tsx
@@ -99,7 +99,8 @@ async function legacyLogout(tokenManager?: TokenManager) {
}
}
-function formatRemainingMs(remainingMs: number): string {
+function formatRemainingMs(remainingMs: number | null): string {
+ if (remainingMs === null) return "-";
if (remainingMs <= 0) return "만료됨";
const totalSeconds = Math.floor(remainingMs / 1000);
@@ -109,11 +110,14 @@ function formatRemainingMs(remainingMs: number): string {
return `${minutes}분 ${seconds}초`;
}
-function useTokenRemainingMs(enabled: boolean): number {
- const [remainingMs, setRemainingMs] = useState(0);
+function useTokenRemainingMs(enabled: boolean): number | null {
+ const [remainingMs, setRemainingMs] = useState(null);
useEffect(() => {
- if (!enabled) return;
+ if (!enabled) {
+ setRemainingMs(null);
+ return;
+ }
const update = () => {
const token = getCookie(appConfig.CLAIM_NAME ?? "");
@@ -142,12 +146,24 @@ export function Header({
const [logoWidth, setLogoWidth] = useState(0);
const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
const logoRef = useRef(null);
- const remainingMs = useTokenRemainingMs(mounted && isLoggedIn && !viewOnly);
const siteId = getCookie("site-id-key") ?? "";
- console.log(
- `/********************* 로그인 만료까지: ${formatRemainingMs(remainingMs)} *********************/`,
- );
+ const remainingMs = useTokenRemainingMs(mounted && isLoggedIn && !viewOnly);
+
+ useEffect(() => {
+ if (
+ !mounted ||
+ !isLoggedIn ||
+ viewOnly ||
+ !authService ||
+ remainingMs === null ||
+ remainingMs > 0
+ ) {
+ return;
+ }
+
+ void authService.logout();
+ }, [mounted, viewOnly, authService, remainingMs]);
useSessionExtendConfirm({
enabled:
@@ -399,7 +415,7 @@ function UserMenuContent({
remainingMs,
onLogout,
}: {
- remainingMs: number;
+ remainingMs: number | null;
onLogout: () => void;
}) {
return (