// js/auth.js /** * JWT 토큰을 디코딩하여 페이로드(내용)를 반환합니다. * @param {string} token - JWT 토큰 * @returns {object|null} - 디코딩된 페이로드 객체 또는 파싱 실패 시 null */ export function parseJwt(token) { try { const b = atob(token.split('.')[1].replace(/-/g,'+').replace(/_/g,'/')); return JSON.parse(new TextDecoder().decode(Uint8Array.from(b, c => c.charCodeAt(0)))); } catch (e) { console.error("잘못된 토큰입니다.", e); return null; } } /** * 인증 토큰을 가져옵니다 (쿠키 → localStorage 폴백). */ export function getToken() { if (window.getSSOToken) return window.getSSOToken(); return null; } /** * 사용자 정보를 가져옵니다 (쿠키 → localStorage 폴백). */ export function getUser() { if (window.getSSOUser) return window.getSSOUser(); return null; } /** * 로그인 성공 후 토큰과 사용자 정보를 저장합니다. * sso_token/sso_user 키로 저장합니다. */ export function saveAuthData(token, user) { // 쿠키 기반 인증 — localStorage 저장 불필요 (gateway에서 쿠키 설정) } /** * 로그아웃 시 인증 정보를 제거합니다. */ export function clearAuthData() { if (window.clearSSOAuth) { window.clearSSOAuth(); return; } } /** * 현재 사용자가 로그인 상태인지 확인합니다. */ export function isLoggedIn() { const token = getToken(); return !!token && token !== 'undefined' && token !== 'null'; }