feat(licence): masquer Register quand la 2e couche refuse

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 <noreply@anthropic.com>
This commit is contained in:
r-zakarya
2026-09-17 06:05:50 +01:00
parent 9de3cde6da
commit 510b75d5bf
+27
View File
@@ -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