t_6549bb2b: Align SPA with admin server API (reset endpoint, initAuth, remove SQL query)
This commit is contained in:
+6
-35
@@ -736,14 +736,12 @@
|
||||
<div style="display:flex;flex-wrap:wrap;gap:8px;">
|
||||
<a href="/api/export/assets" class="btn btn-outline" download>📄 Export Assets CSV</a>
|
||||
<a href="/api/export/checkins" class="btn btn-outline" download>📄 Export Check-Ins CSV</a>
|
||||
<a href="/api/export/service-summary" class="btn btn-outline" download>📄 Service Summary CSV</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-title">Database</div>
|
||||
<div style="display:flex;flex-wrap:wrap;gap:8px;">
|
||||
<button class="btn btn-danger btn-sm" onclick="confirmResetDb()">⚠️ Reset Database</button>
|
||||
<button class="btn btn-outline btn-sm" onclick="showRunSqlModal()">💾 Run SQL</button>
|
||||
</div>
|
||||
<div id="resetResult" class="text-sm text-muted mt-8"></div>
|
||||
</div>
|
||||
@@ -900,6 +898,7 @@ async function doLogin() {
|
||||
AppState.currentUser = { id: data.id, username: data.username, role: data.role };
|
||||
AppState.authToken = data.token;
|
||||
localStorage.setItem('adminToken', data.token);
|
||||
sessionStorage.setItem('adminUser', JSON.stringify(AppState.currentUser));
|
||||
document.getElementById('loginOverlay').classList.add('hidden');
|
||||
updateUserUI();
|
||||
switchPage('dashboard');
|
||||
@@ -1916,43 +1915,15 @@ async function confirmResetDb() {
|
||||
'Reset Everything', 'btn-danger');
|
||||
if (!confirmed) return;
|
||||
try {
|
||||
const result = await api('/api/admin/reset', { method: 'POST' });
|
||||
const result = await api('/api/reset-database', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json', 'X-Confirm-Reset': 'yes' },
|
||||
});
|
||||
showToast(result.message || 'Database reset');
|
||||
document.getElementById('resetResult').textContent = 'Reset at ' + new Date().toLocaleString();
|
||||
} catch (e) {
|
||||
document.getElementById('resetResult').innerHTML =
|
||||
`<span class="text-danger">Reset endpoint not available: ${esc(e.message)}. Add a POST /api/admin/reset route to the server.</span>`;
|
||||
}
|
||||
}
|
||||
|
||||
function showRunSqlModal() {
|
||||
document.getElementById('modalTitle').textContent = 'Run SQL Query';
|
||||
document.getElementById('modalBody').innerHTML = `
|
||||
<div class="form-group">
|
||||
<label class="form-label">SQL Statement</label>
|
||||
<textarea id="modalSql" class="input-field" rows="4" placeholder="SELECT * FROM assets LIMIT 10" style="font-family:monospace;font-size:12px;"></textarea>
|
||||
</div>
|
||||
<div id="sqlResult" class="text-sm text-muted"></div>
|
||||
`;
|
||||
document.getElementById('modalActions').innerHTML = `
|
||||
<button class="btn btn-outline" onclick="closeModal(false)">Cancel</button>
|
||||
<button class="btn btn-primary" onclick="runSql()">Run</button>
|
||||
`;
|
||||
document.getElementById('modalOverlay').classList.add('open');
|
||||
}
|
||||
|
||||
async function runSql() {
|
||||
const sql = document.getElementById('modalSql').value.trim();
|
||||
if (!sql) return;
|
||||
try {
|
||||
const result = await api('/api/admin/query', {
|
||||
method: 'POST',
|
||||
headers: { 'Content-Type': 'application/json' },
|
||||
body: JSON.stringify({ sql }),
|
||||
});
|
||||
document.getElementById('sqlResult').innerHTML = `<pre style="background:#0a0b0f;padding:10px;border-radius:6px;font-size:11px;max-height:300px;overflow:auto;">${esc(JSON.stringify(result, null, 2))}</pre>`;
|
||||
} catch (e) {
|
||||
document.getElementById('sqlResult').innerHTML = `<span class="text-danger">${esc(e.message)}</span>`;
|
||||
`<span class="text-danger">Reset failed: ${esc(e.message)}</span>`;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user