diff --git a/.gitignore b/.gitignore index 4f9d3bb..19a3668 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,6 @@ venv/ # Dependencies (just in case they get added later) node_modules/ package-lock.json + +# Environment variables +.env diff --git a/app.js b/app.js index 3823e48..2fcfd93 100644 --- a/app.js +++ b/app.js @@ -202,7 +202,7 @@ document.addEventListener('DOMContentLoaded', () => { const response = await fetch('feedback_backend.php', { method: 'POST', headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ action: 'delete', id: id, secret: '1234' }) + body: JSON.stringify({ action: 'delete', id: id, secret: sessionStorage.getItem('schnappix_admin_secret') || '' }) }); const result = await response.json(); if (result.success) { @@ -240,7 +240,7 @@ document.addEventListener('DOMContentLoaded', () => { const response = await fetch('feedback_backend.php', { method: 'POST', headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ action: 'answer', id: id, answer: answer, secret: '1234' }) + body: JSON.stringify({ action: 'answer', id: id, answer: answer, secret: sessionStorage.getItem('schnappix_admin_secret') || '' }) }); const result = await response.json(); if (result.success) { @@ -424,26 +424,37 @@ document.addEventListener('DOMContentLoaded', () => { } if (adminLoginForm) { - adminLoginForm.addEventListener('submit', (e) => { + adminLoginForm.addEventListener('submit', async (e) => { e.preventDefault(); const password = adminPasswordInput.value; - // Admin password matching the default app settings: "1234" - if (password === '1234') { - isAdmin = true; - sessionStorage.setItem('schnappix_is_admin', 'true'); - adminPasswordInput.value = ''; - adminLoginError.style.display = 'none'; + + try { + const response = await fetch('feedback_backend.php', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ action: 'verify_password', secret: password }) + }); - // Switch Modals - adminLoginModal.classList.remove('open'); - adminPanelModal.classList.add('open'); - - // Re-render to show trash cans - renderFeedback(getActiveFilter()); - } else { + if (response.ok) { + isAdmin = true; + sessionStorage.setItem('schnappix_is_admin', 'true'); + sessionStorage.setItem('schnappix_admin_secret', password); + adminPasswordInput.value = ''; + adminLoginError.style.display = 'none'; + + // Switch Modals + adminLoginModal.classList.remove('open'); + adminPanelModal.classList.add('open'); + + // Re-render to show trash cans + renderFeedback(getActiveFilter()); + } else { + adminLoginError.style.display = 'block'; + adminPasswordInput.value = ''; + } + } catch (err) { + console.error(err); adminLoginError.style.display = 'block'; - adminPasswordInput.value = ''; - adminPasswordInput.focus(); } }); } diff --git a/faq.html b/faq.html index 334bae4..2295e5e 100644 --- a/faq.html +++ b/faq.html @@ -224,7 +224,7 @@
Der passwortgeschützte Admin-Bereich der Tablet-App steuert das gesamte Verhalten der Fotobox. Folgende Felder und Schalter stehen dir zur Verfügung:
1234) für diesen Bereich zu ändern, damit Gäste sich keinen Zugriff verschaffen können..env Datei) für diesen Bereich zu ändern, damit Gäste sich keinen Zugriff verschaffen können.Der "Admin"-Button oben in der Navigation dieser Website ist speziell für die Moderation des Feedback Hubs gedacht. Mit dem Standard-Passwort (1234) können Administratoren auf Feedback-Einträge von Nutzern offiziell antworten, unangemessene Einträge löschen oder die gesamte Liste als Code exportieren.
Der "Admin"-Button oben in der Navigation dieser Website ist speziell für die Moderation des Feedback Hubs gedacht. Mit dem Admin-Passwort (hinterlegt in der .env Datei) können Administratoren auf Feedback-Einträge von Nutzern offiziell antworten, unangemessene Einträge löschen oder die gesamte Liste als Code exportieren.