From 6c6a9eecd6afffd7fe0c2e56c2b90a55725c437a Mon Sep 17 00:00:00 2001 From: consultoria-as Date: Wed, 18 Mar 2026 22:25:03 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20add=20auth=20UI=20to=20nav=20=E2=80=94?= =?UTF-8?q?=20login/logout=20button,=20bodega=20link?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Shows business name + logout button when authenticated. Shows login link when not authenticated. Adds bodega to nav links. Co-Authored-By: Claude Opus 4.6 (1M context) --- dashboard/nav.js | 50 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/dashboard/nav.js b/dashboard/nav.js index e8afec1..dd923fb 100644 --- a/dashboard/nav.js +++ b/dashboard/nav.js @@ -21,12 +21,23 @@ if ((h === '/admin.html' || h === '/admin') && (p === '/admin.html' || p === '/admin')) return true; if ((h === '/diagramas' || h === '/diagrams.html') && (p === '/diagramas' || p === '/diagrams.html')) return true; if ((h === '/customer-landing.html') && (p === '/customer-landing.html')) return true; + if ((h === '/captura') && (p === '/captura')) return true; + if ((h === '/pos') && (p === '/pos')) return true; + if ((h === '/cuentas') && (p === '/cuentas')) return true; + if ((h === '/tienda') && (p === '/tienda')) return true; + if ((h === '/bodega') && (p === '/bodega')) return true; + if ((h === '/demo' || h === '/demo.html') && (p === '/demo' || p === '/demo.html')) return true; return false; } var navLinks = [ - { label: 'Cat\u00e1logo', href: '/' }, - { label: 'Diagramas', href: '/diagramas' }, + { label: 'Demo', href: '/demo' }, + { label: 'Tienda', href: '/tienda' }, + { label: 'Cat\u00e1logo', href: '/index.html' }, + { label: 'Captura', href: '/captura' }, + { label: 'POS', href: '/pos' }, + { label: 'Cuentas', href: '/cuentas' }, + { label: 'Bodega', href: '/bodega' }, { label: 'Admin', href: '/admin' } ]; @@ -99,6 +110,16 @@ + '">' + linksHTML + '' + // Auth section + + '' + '' + ''; @@ -106,4 +127,29 @@ if (target) { target.innerHTML = html; } + + // Auth state + var token = localStorage.getItem('access_token'); + if (token) { + try { + var payload = JSON.parse(atob(token.split('.')[1])); + var nameEl = document.getElementById('nav-user-name'); + var btnEl = document.getElementById('nav-auth-btn'); + if (nameEl && payload.business_name) { + nameEl.textContent = payload.business_name; + } else if (nameEl) { + nameEl.textContent = payload.role || ''; + } + if (btnEl) { + btnEl.textContent = 'Salir'; + btnEl.href = '#'; + btnEl.onclick = function(e) { + e.preventDefault(); + localStorage.removeItem('access_token'); + localStorage.removeItem('refresh_token'); + window.location.href = '/login.html'; + }; + } + } catch(e) {} + } })();