Files
newbury-exhibit-v2/public/admin/login.html
T

25 lines
1.3 KiB
HTML

<!doctype html>
<html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1">
<title>Admin Login — Newbury Exhibit</title></head>
<body>
<div style="max-width:340px;margin:18vh auto;text-align:center">
<h1 style="font-size:1.3rem">Exhibit Admin</h1>
<input id="pw" type="password" placeholder="Admin password" style="width:100%;padding:10px;margin:12px 0;font-size:1rem">
<button id="go" class="primary" style="width:100%;padding:10px;font-size:1rem">Sign in</button>
<div id="err" style="color:#ff8b8b;margin-top:10px;font-size:.85rem"></div>
</div>
<script type="module">
import { styles } from './admin.js';
document.head.insertAdjacentHTML('beforeend', `<style>${styles}</style>`);
const go = async () => {
const res = await fetch('/api/login', { method: 'POST', headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ password: document.getElementById('pw').value }) });
if (!res.ok) { document.getElementById('err').textContent = 'Wrong password.'; return; }
localStorage.setItem('exhibitToken', (await res.json()).token);
location.href = new URLSearchParams(location.search).get('next') || '/admin/layout.html';
};
document.getElementById('go').onclick = go;
document.getElementById('pw').onkeydown = (e) => e.key === 'Enter' && go();
</script>
</body></html>