const $ = (id) => document.getElementById(id); // Fixed API base for this deployment const API_BASE = 'https://cfdav.fnos.workers.dev'; function log(msg) { const el = $('log'); el.textContent = `[${new Date().toISOString()}] ${msg}\n` + el.textContent; } function getAuthHeader() { const email = $('email').value.trim(); const pass = $('password').value; const token = btoa(`${email}:${pass}`); return `Basic ${token}`; } async function apiFetch(path, options = {}) { const url = API_BASE + path; const headers = options.headers || {}; headers['Authorization'] = getAuthHeader(); headers['Content-Type'] = 'application/json'; const res = await fetch(url, { ...options, headers }); if (!res.ok) { const text = await res.text(); throw new Error(`${res.status} ${res.statusText}: ${text}`); } return res.json(); } async function loadUsers() { const data = await apiFetch('/api/admin/users'); const list = data.data || []; const tbody = $('userList'); tbody.innerHTML = ''; list.forEach((u) => { const tr = document.createElement('tr'); tr.innerHTML = ` ${u.email} ${u.is_admin ? 'yes' : 'no'} ${u.created_at} `; tr.querySelector('button').addEventListener('click', () => deleteUser(u.id)); tbody.appendChild(tr); }); log('Loaded users'); } async function createUser() { const email = $('newEmail').value.trim(); const password = $('newPassword').value; const isAdmin = $('newIsAdmin').checked; if (!email || !password) { log('Email and password required'); return; } await apiFetch('/api/admin/users', { method: 'POST', body: JSON.stringify({ email, password, isAdmin }) }); $('newEmail').value = ''; $('newPassword').value = ''; $('newIsAdmin').checked = false; log('User created'); await loadUsers(); } async function deleteUser(id) { if (!confirm('Delete this user?')) return; await apiFetch(`/api/admin/users/${id}`, { method: 'DELETE' }); log('User deleted'); await loadUsers(); } function setLoggedIn(state) { $('loginCard').classList.toggle('hidden', state); $('app').classList.toggle('hidden', !state); } async function login() { try { await loadUsers(); setLoggedIn(true); log('Login success'); } catch (e) { setLoggedIn(false); log(`Login failed: ${e.message}`); } } function logout() { $('password').value = ''; setLoggedIn(false); log('Logged out'); } $('loginBtn').addEventListener('click', login); $('refreshBtn').addEventListener('click', () => loadUsers().catch((e) => log(e.message))); $('createBtn').addEventListener('click', () => createUser().catch((e) => log(e.message))); $('logoutBtn').addEventListener('click', logout); setLoggedIn(false);