// ═══════════════════════════════════════════════════════ // JWT Decoder // ═══════════════════════════════════════════════════════ async function decodeJWT() { const token = document.getElementById('jwtInput').value.trim(); if (!token) return setStatus('jwtStatus','error','Paste a JWT.'); const d = await apiPost('/api/jwt/decode', { token }); if (d.success) { const expStr = d.expired === null ? '—' : d.expired ? 'EXPIRED ✗' : 'VALID ✓'; document.getElementById('jwtResults').innerHTML = `
Header
${JSON.stringify(d.header, null, 2)}
Payload
${JSON.stringify(d.payload, null, 2)}
Expiry
${expStr}
`; setStatus('jwtStatus','success','Decoded ✓'); } else setStatus('jwtStatus','error', d.error); }