0b1486df8f
gates / gates (push) Successful in 24s
/recovery is in the AUTHENTICATED route table — its reader is the household, not a visitor. The first draft of v0.254.0 gave it the anonymous form, which sets the felhom_lang cookie that langFor deliberately ignores once there is a session: the button would have appeared to work and done nothing. Found by the live probe on demo-hp reporting no globe on /recovery (it 302s to /login without a session) and then reading the route table. executeTemplateLang now branches on hasSession: household form with its session CSRF, or the visitor form without. The parity harness and TestI18nDirectRenderPagesFollowLanguage carry the same branch, so the fixture is the form the real page serves — the trap this release already walked into once with the shells. A per-session CSRF token cannot be a fixture value, so it is blanked on both sides of every parity comparison, exactly as relative ages already were. What stays pinned is that the field is THERE and WHICH form it sits in — the half that says whether the globe writes the household's setting or the visitor's cookie. Evidence regenerated: 3 change shapes across 106 fixtures, 5 byte-identical (both guest share pages and the catch-all — the three that must not change). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
121 lines
5.7 KiB
HTML
121 lines
5.7 KiB
HTML
|
|
<!DOCTYPE html>
|
|
<html lang="hu">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<meta name="robots" content="noindex, nofollow">
|
|
<title>Adatok visszaszerzése — Felhom</title>
|
|
<link rel="stylesheet" href="/static/style.css">
|
|
</head>
|
|
<body class="login-body">
|
|
<div class="shell-lang"><details class="lang-globe">
|
|
<summary class="lang-globe-btn" aria-label="Nyelv" title="Nyelv"><svg class="ico" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="10" /><path d="M2 12h20" /><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z" /></svg></summary>
|
|
<ul class="lang-globe-menu">
|
|
<li><form method="POST" action="/settings/language"><input type="hidden" name="_csrf" value="CSRF"><input type="hidden" name="back" value="/i18n-fixture"><button type="submit" name="lang" value="hu" lang="hu" class="lang-globe-item current" aria-current="true">Magyar</button></form></li>
|
|
<li><form method="POST" action="/settings/language"><input type="hidden" name="_csrf" value="CSRF"><input type="hidden" name="back" value="/i18n-fixture"><button type="submit" name="lang" value="en" lang="en" class="lang-globe-item">English</button></form></li>
|
|
</ul>
|
|
</details></div>
|
|
<div class="login-card" style="max-width:46rem">
|
|
<img src="/static/felhom-logo.svg" alt="Felhom.eu" class="login-logo">
|
|
|
|
|
|
|
|
<h1 class="login-title">Adatok <span class="title-accent">visszaszerzése</span></h1>
|
|
<p class="login-subtitle">Teszt Ügyfél</p>
|
|
|
|
|
|
|
|
|
|
<p>
|
|
Ezt a gépet újratelepítették. A korábbi, <strong>házon kívüli mentéseid megvannak</strong> — a
|
|
Felhom központi rendszere őriz hozzájuk egy lezárt csomagot. A csomagot csak a <strong>te helyreállítási
|
|
kódoddal</strong> lehet kinyitni.
|
|
</p>
|
|
|
|
<div class="alert alert-warning">
|
|
<strong>A helyreállítási kódot senki nem tudja pótolni</strong> — sem a Felhom, sem az
|
|
ügyfélszolgálat, sem az üzemeltető. Ez szándékos: így a mentéseidet rajtad kívül senki nem
|
|
tudja megnyitni. Ha a kód elveszett, a korábbi mentések nem nyithatók meg többé.
|
|
</div>
|
|
|
|
<p>
|
|
Ha megadod a kódot, <strong>feloldjuk a mentéseid zárolását és megmutatjuk, mi van bennük</strong>
|
|
— melyik alkalmazás, mikorról, mekkora. <strong>Ebben a lépésben semmit nem állítunk vissza és
|
|
semmi nem változik.</strong> A visszaállítást utána, alkalmazásonként külön választhatod.
|
|
</p>
|
|
|
|
<div id="unlock-gateway-error" class="alert alert-error" style="display:none" role="alert"></div>
|
|
|
|
<form id="unlock-form" method="POST" action="/recovery/unlock" autocomplete="off">
|
|
|
|
<label for="recovery_code">Helyreállítási kód (tíz szó)</label>
|
|
<input type="password" id="recovery_code" name="recovery_code"
|
|
autocomplete="off" autocapitalize="off" autocorrect="off" spellcheck="false"
|
|
placeholder="tíz szó, szóközökkel elválasztva" required>
|
|
<div class="form-actions">
|
|
<button type="submit" class="btn btn-primary">Mentések feloldása</button>
|
|
<form method="POST" action="/recovery/postpone" style="display:inline">
|
|
|
|
<button type="submit" class="btn btn-outline">Most nem</button>
|
|
</form>
|
|
</div>
|
|
</form>
|
|
|
|
|
|
<script>
|
|
(function () {
|
|
var form = document.getElementById('unlock-form');
|
|
var box = document.getElementById('unlock-gateway-error');
|
|
if (!form || !box || !window.fetch) { return; }
|
|
form.addEventListener('submit', function (ev) {
|
|
ev.preventDefault();
|
|
box.style.display = 'none';
|
|
var btn = form.querySelector('button[type=submit]');
|
|
if (btn) { btn.disabled = true; btn.textContent = 'Feloldás folyamatban…'; }
|
|
fetch(form.action, {
|
|
method: 'POST',
|
|
body: new FormData(form),
|
|
credentials: 'same-origin',
|
|
redirect: 'follow'
|
|
}).then(function (resp) {
|
|
if (resp.status >= 500) { throw new Error('gateway'); }
|
|
return resp.text().then(function (html) {
|
|
document.open(); document.write(html); document.close();
|
|
});
|
|
}).catch(function () {
|
|
|
|
|
|
if (btn) { btn.disabled = false; btn.textContent = 'Mentések feloldása'; }
|
|
box.textContent = 'A gép éppen újraindul, ezért most nem tudtuk befejezni a műveletet. '
|
|
+ 'Semmi nem változott. Várj néhány másodpercet, és próbáld újra — a kódodra továbbra is szükséged lesz, '
|
|
+ 'úgyhogy tartsd kéznél.';
|
|
box.style.display = '';
|
|
});
|
|
});
|
|
})();
|
|
</script>
|
|
|
|
<p class="form-hint">
|
|
A „Most nem” csak azt jelenti, hogy nem zavarunk vele többet a kezdőlapon. A mentéseid ettől
|
|
megmaradnak, és ez az oldal a <strong>Biztonsági mentés → Távoli mentés</strong> oldalról
|
|
bármikor újra elérhető.
|
|
</p>
|
|
|
|
|
|
<hr style="margin:1.5rem 0;border:none;border-top:1px solid var(--border,#2a3142)">
|
|
|
|
<p class="form-hint">
|
|
Ha a helyreállítási kódod véglegesen elveszett, és tudomásul veszed, hogy a korábbi mentések
|
|
így nem nyithatók meg többé:
|
|
|
|
ez a lehetőség akkor válik elérhetővé, ha a gép már újra kapcsolódott a házon kívüli
|
|
tárhelyhez. Addig a mentéseid érintetlenül megmaradnak.
|
|
|
|
</p>
|
|
|
|
|
|
</div>
|
|
</body>
|
|
</html>
|