diff --git a/js/app.js b/js/app.js index 8acb4d3..9f2d89c 100644 --- a/js/app.js +++ b/js/app.js @@ -7026,10 +7026,37 @@ async function ensureLicence() { }); } +// REGISTER MASQUE QUAND LA 2e COUCHE REFUSE LA LICENCE. +// +// Cosmetique, et il faut le savoir : /register est deja refuse cote serveur. +// Ce qui change, c'est que qui a rapiece la 1re couche ne se voit plus offrir +// un formulaire de creation de compte qui n'aboutit jamais. /ping n'exige +// aucune session et existe toujours : avant connexion, un 404 de sa part ne +// peut venir que de la 2e couche. Toute AUTRE panne laisse Register visible — +// masquer par erreur empecherait un client legitime de creer son compte. +// Pas d'await chez l'appelant : l'ecran d'authentification ne doit pas +// attendre ce test pour s'afficher. +async function applyRegisterVisibility() { + if (!Bridge.active) return; + let refused = false; + try { await api('/ping'); } + // Le 404 JSON exact de la 2e couche, pas n'importe quel 404 : le verrou du + // jeton repond aussi 404, mais sans corps JSON. + catch (e) { refused = (e.status === 404 && e.body && e.body.error === 'Not found'); } + const tabs = document.querySelector('.auth-tabs'); + if (tabs) tabs.classList.toggle('is-hidden', refused); + if (refused) { + $$('.auth-tab').forEach(x => x.classList.toggle('is-active', x.dataset.tab === 'login')); + $('#loginForm').classList.remove('is-hidden'); + $('#registerForm').classList.add('is-hidden'); + } +} + async function showAuth() { $('#authScreen').classList.remove('is-hidden'); $('#appShell').classList.add('is-hidden'); if (autoLockTimer) { clearTimeout(autoLockTimer); autoLockTimer = null; } + applyRegisterVisibility(); // Re-query PIN presence each time we land on the auth screen — the // user may have set/removed it from another instance, and we want