[ui] Extrahována kontrola síly hesla do samostatného JS souboru, přidána kontrola minimální délky

[ui] registrace.php – použit společný JS pro kontrolu hesla
[ui] nove_heslo.php – použit společný JS pro kontrolu hesla, opraven odkaz na reset
[ui] admin.php – použit společný JS pro kontrolu hesla
[FÁZE-1][install] Vícekrokový průběh instalace, použit společný JS pro kontrolu hesla
This commit is contained in:
stepan
2026-03-17 10:06:44 +01:00
parent 47ae07946d
commit a116b30df7
5 changed files with 167 additions and 411 deletions
+7 -34
View File
@@ -11,6 +11,7 @@
// Krok 2 pokud selže, zobrazí SQL pro ruční zadání do phpMyAdmin
// Krok 3 ověření, že tabulky existují a mají správnou strukturu
// Krok 4 formulář pro vytvoření prvního admina + zámek
// Krok 5 instalace úspěšně dokončena
//
// Po úspěšné instalaci se vytvoří soubor install.lock
// a tento skript již nepůjde spustit znovu.
@@ -132,9 +133,8 @@ function zkontroluj_tabulky(PDO $pdo): array
// URČENÍ AKTUÁLNÍHO KROKU
// ------------------------------------------------------------
$krok = 1; // výchozí krok
$chyba = '';
$zprava = '';
$krok = 1;
$chyba = '';
// Krok se přenáší přes skryté pole ve formuláři
$krok_z_post = (int) ($_POST['krok'] ?? 0);
@@ -250,7 +250,7 @@ elseif ($krok_z_post === 4) {
}
// ------------------------------------------------------------
// SESTAVENÍ SQL TEXTU PRO ZOBRAZENÍ UŽIVATELI (krok 2)
// SESTAVENÍ SQL TEXTU PRO ZOBRAZENÍ UŽIVATELI (krok 2 a 3)
// ------------------------------------------------------------
$sql_pro_zobrazeni = implode(";\n\n", $sql_tabulky) . ';';
@@ -393,37 +393,10 @@ elseif ($krok === 5): ?>
<script src="https://cdnjs.cloudflare.com/ajax/libs/zxcvbn/4.4.2/zxcvbn.js"></script>
<script>
const MIN_SILA = <?php echo (int) HESLO_MIN_SILA; ?>;
const POPISKY_SILY = ['Velmi slabé','Slabé','Průměrné','Silné','Velmi silné'];
const inputHeslo = document.getElementById('heslo');
const spanSila = document.getElementById('heslo-sila');
const tlacitko = document.getElementById('tlacitko-odeslat');
const spanDuvod = document.getElementById('tlacitko-duvod');
// Prvky existují jen na kroku 4
if (inputHeslo) {
inputHeslo.addEventListener('input', function () {
const hodnota = this.value;
if (hodnota.length === 0) {
spanSila.textContent = 'Síla hesla: zadej heslo';
tlacitko.disabled = true;
spanDuvod.textContent = ' (čekám na dostatečně silné heslo)';
return;
}
const vysledek = zxcvbn(hodnota);
const skore = vysledek.score;
spanSila.textContent = 'Síla hesla: ' + POPISKY_SILY[skore] + ' (' + skore + '/4)';
if (skore >= MIN_SILA) {
tlacitko.disabled = false;
spanDuvod.textContent = '';
} else {
tlacitko.disabled = true;
spanDuvod.textContent = ' (heslo je příliš slabé, potřebuji alespoň ' + MIN_SILA + '/4)';
}
});
}
var AUTH_HESLO_MIN_SILA = <?php echo (int) HESLO_MIN_SILA; ?>;
var AUTH_HESLO_MIN_DELKA = <?php echo (int) HESLO_MIN_DELKA; ?>;
</script>
<script src="<?php echo htmlspecialchars(PROJEKT_URL); ?>/auth/js/heslo-sila.js"></script>
</body>
</html>