Files
2026-05-01 20:02:13 +02:00

23 lines
1.6 KiB
JavaScript

// ═══════════════════════════════════════════════════════
// 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 ? '<span style="color:var(--red)">EXPIRED ✗</span>' : '<span style="color:var(--green)">VALID ✓</span>';
document.getElementById('jwtResults').innerHTML = `
<div class="result-card">
<div class="panel-label">Header</div>
<pre style="background:var(--bg-input);padding:12px;border-radius:var(--radius-sm);font-size:0.82rem;color:var(--cyan);overflow-x:auto;">${JSON.stringify(d.header, null, 2)}</pre>
<div class="panel-label" style="margin-top:14px;">Payload</div>
<pre style="background:var(--bg-input);padding:12px;border-radius:var(--radius-sm);font-size:0.82rem;color:var(--green);overflow-x:auto;">${JSON.stringify(d.payload, null, 2)}</pre>
<div class="panel-label" style="margin-top:14px;">Expiry</div>
<div style="font-size:0.9rem;">${expStr}</div>
</div>`;
setStatus('jwtStatus','success','Decoded ✓');
} else setStatus('jwtStatus','error', d.error);
}