From 510b75d5bfe5a55246cc65c6e575f71d19932121 Mon Sep 17 00:00:00 2001 From: r-zakarya <82443831+r-zakarya@users.noreply.github.com> Date: Thu, 17 Sep 2026 06:05:50 +0100 Subject: [PATCH] feat(licence): masquer Register quand la 2e couche refuse MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A l'arrivee sur l'ecran de connexion, /ping est interroge : son 404 JSON exact ne peut venir, avant connexion, que de la 2e couche. Dans ce cas les onglets disparaissent et seul Login reste. Tout autre echec laisse Register visible — le masquer a tort empecherait un vrai client de creer son compte. Le test porte sur le corps JSON, pas sur le seul statut : le verrou du jeton repond aussi 404, sans corps. Cosmetique : /register etait deja refuse cote serveur. On cesse seulement de proposer un formulaire qui n'aboutit jamais. Co-Authored-By: Claude Opus 5 --- js/app.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) 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