feat(WEB): 헤더 바로가기 버튼 추가 및 종합분석 목데이터 적용
- 공용 헤더에 종합분석/품질인정심사 바로가기 버튼 추가 (데스크톱/모바일) - 종합분석 페이지 목데이터 적용 (API 호출 비활성화) - 로그인 페이지 기본 계정 설정 - QMS 필터/모달 컴포넌트 개선 - 메뉴 폴링 및 fetch-wrapper 유틸리티 개선 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -31,6 +31,17 @@ async function setNewTokenCookies(tokens: {
|
||||
path: '/',
|
||||
maxAge: tokens.expiresIn || 7200,
|
||||
});
|
||||
|
||||
// 🔔 토큰 갱신 신호 쿠키 설정 (클라이언트에서 감지용)
|
||||
// HttpOnly: false로 설정하여 클라이언트에서 읽을 수 있게 함
|
||||
cookieStore.set('token_refreshed_at', Date.now().toString(), {
|
||||
httpOnly: false,
|
||||
secure: isProduction,
|
||||
sameSite: 'lax',
|
||||
path: '/',
|
||||
maxAge: 60, // 1분 후 자동 삭제
|
||||
});
|
||||
console.log('🔔 [setNewTokenCookies] token_refreshed_at 신호 쿠키 설정');
|
||||
}
|
||||
|
||||
if (tokens.refreshToken) {
|
||||
@@ -164,8 +175,15 @@ export async function serverFetch(
|
||||
|
||||
return { response, error: null };
|
||||
} catch (error) {
|
||||
// redirect()는 NEXT_REDIRECT 에러를 throw하므로 다시 throw
|
||||
if (error instanceof Error && error.message === 'NEXT_REDIRECT') {
|
||||
// Next.js 15: redirect()는 digest 프로퍼티를 가진 에러를 throw
|
||||
// 이 에러는 다시 throw해서 Next.js가 처리하도록 해야 함
|
||||
if (
|
||||
error &&
|
||||
typeof error === 'object' &&
|
||||
'digest' in error &&
|
||||
typeof (error as { digest: unknown }).digest === 'string' &&
|
||||
(error as { digest: string }).digest.startsWith('NEXT_REDIRECT')
|
||||
) {
|
||||
throw error;
|
||||
}
|
||||
console.error(`[serverFetch] Network error: ${url}`, error);
|
||||
|
||||
Reference in New Issue
Block a user