refactor(WEB): Server Action 공통화 및 보안 강화
- executeServerAction 공통 유틸 도입으로 actions.ts 대폭 간소화 (50+개 파일) - sanitize 유틸 추가 (XSS 방지) - middleware CSP 헤더 추가 및 Open Redirect 방지 - 프록시 라우트 로깅 개발환경 한정으로 변경 - 프로덕션 불필요 console.log 제거 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -111,9 +111,13 @@ export async function refreshMenus(): Promise<RefreshMenuResult> {
|
||||
// 5. localStorage 업데이트 (새로고침 대응)
|
||||
const userData = localStorage.getItem('user');
|
||||
if (userData) {
|
||||
const parsed = JSON.parse(userData);
|
||||
parsed.menu = transformedMenus;
|
||||
localStorage.setItem('user', JSON.stringify(parsed));
|
||||
try {
|
||||
const parsed = JSON.parse(userData);
|
||||
parsed.menu = transformedMenus;
|
||||
localStorage.setItem('user', JSON.stringify(parsed));
|
||||
} catch {
|
||||
// localStorage 데이터 손상 시 무시
|
||||
}
|
||||
}
|
||||
|
||||
// 6. Zustand 스토어 업데이트 (UI 즉시 반영)
|
||||
@@ -168,9 +172,13 @@ export async function forceRefreshMenus(): Promise<RefreshMenuResult> {
|
||||
// localStorage 업데이트
|
||||
const userData = localStorage.getItem('user');
|
||||
if (userData) {
|
||||
const parsed = JSON.parse(userData);
|
||||
parsed.menu = transformedMenus;
|
||||
localStorage.setItem('user', JSON.stringify(parsed));
|
||||
try {
|
||||
const parsed = JSON.parse(userData);
|
||||
parsed.menu = transformedMenus;
|
||||
localStorage.setItem('user', JSON.stringify(parsed));
|
||||
} catch {
|
||||
// localStorage 데이터 손상 시 무시
|
||||
}
|
||||
}
|
||||
|
||||
// Zustand 스토어 업데이트
|
||||
|
||||
Reference in New Issue
Block a user