From 7154901ce39d186a89b9e11d7d859bf751edbe47 Mon Sep 17 00:00:00 2001 From: root Date: Thu, 2 Jul 2026 15:37:06 +0000 Subject: [PATCH] feat: senha dinamica (dia+mes) + confirm no limpar com try-catch --- src/index.html | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/src/index.html b/src/index.html index 50a7a8a..029783d 100644 --- a/src/index.html +++ b/src/index.html @@ -543,7 +543,8 @@
🔐 Senha Admin (editar dias anteriores)
- + +
@@ -1233,6 +1234,7 @@ function loadConfig() { } function saveConfig() { config.admin_password = document.getElementById('cfg-admin-password').value.trim(); + config.dynamic_password = document.getElementById('cfg-dynamic-password').value.trim(); try { localStorage.setItem(CFG_KEY, JSON.stringify(config)); } catch(e) {} buildDatalists(); } @@ -1246,6 +1248,7 @@ function openConfig() { renderCfgList('clientes', 'cfg-clientes-list'); renderCfgList('vales_nomes', 'cfg-vales-list'); document.getElementById('cfg-admin-password').value = config.admin_password || ''; + document.getElementById('cfg-dynamic-password').value = config.dynamic_password || ''; } function closeConfig() { document.getElementById('modal-config').classList.remove('open'); } function renderCfgList(key, containerId) { @@ -2102,7 +2105,9 @@ document.getElementById('btn-recibo').addEventListener('click', async () => { }); document.getElementById('btn-limpar').addEventListener('click', () => { - if (!confirm('Tem certeza? Irá apagar todas as informações para iniciar uma nova.')) return; + try { + if (!confirm('Tem certeza? Irá apagar todas as informações para iniciar uma nova.')) return; + } catch(e) { return; } localStorage.removeItem(LS_KEY); estado = { uuid: crypto.randomUUID ? crypto.randomUUID() : Date.now().toString(), @@ -2645,16 +2650,26 @@ window.toggleEditConsulta = async function() { closeRelatorioModal(); }; -// Pede senha admin — retorna Promise +// Calcula senha dinâmica do dia: dia e mês como 2 dígitos cada, concatenados +// ex: 17/12 → "1712" +function getDynamicPw() { + const d = new Date(); + const day = String(d.getDate()).padStart(2, '0'); + const month = String(d.getMonth() + 1).padStart(2, '0'); + return day + month; +} + function askPassword() { return new Promise(resolve => { - const pw = config.admin_password; + const fixedPw = config.admin_password; + const dynPw = getDynamicPw(); const overlay = document.createElement('div'); overlay.style.cssText = 'position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,0.5);z-index:999999;display:flex;align-items:center;justify-content:center;'; overlay.id = 'pw-modal'; overlay.innerHTML = `
🔐 Senha Admin
+
Dinâmica hoje: ${getDynamicPw()}
@@ -2673,7 +2688,7 @@ function askPassword() { inp.addEventListener('keydown', e => { if (e.key === 'Enter') document.getElementById('pw-ok-btn').click(); }); document.getElementById('pw-ok-btn').addEventListener('click', () => { const val = document.getElementById('pw-input').value; - if (val === pw) { + if (val === fixedPw || val === dynPw) { document.getElementById('pw-modal').remove(); resolve(true); } else {