[FÁZE-1][install] Tabulky přejmenovány na anglické názvy s prefixem auth_

This commit is contained in:
stepan
2026-03-16 23:21:15 +01:00
parent f4fba3fcea
commit c39ed094ba
+45 -38
View File
@@ -36,11 +36,11 @@ $uspech = false;
if ($_SERVER['REQUEST_METHOD'] === 'POST') { if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Načtení hodnot z formuláře // Načtení hodnot z formuláře
$email = trim($_POST['email'] ?? ''); $email = trim($_POST['email'] ?? '');
$heslo = $_POST['heslo'] ?? ''; $heslo = $_POST['heslo'] ?? '';
$heslo2 = $_POST['heslo2'] ?? ''; $heslo2 = $_POST['heslo2'] ?? '';
// Základní validace emailu // Validace emailu
if (empty($email)) { if (empty($email)) {
$chyba = 'Email nesmí být prázdný.'; $chyba = 'Email nesmí být prázdný.';
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) { } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
@@ -66,43 +66,45 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// ------------------------------------------------ // ------------------------------------------------
// Tabulka uživatelů přihlašovacího systému // Tabulka uživatelů přihlašovacího systému
// utf8mb4 = plná podpora Unicode (diakritika, emoji) // utf8mb4 = plná podpora Unicode (diakritika, emoji, ...)
$pdo->exec(" $pdo->exec("
CREATE TABLE IF NOT EXISTS `" . DB_TABULKA_UZIVATELE . "` ( CREATE TABLE IF NOT EXISTS `" . DB_TABULKA_UZIVATELE . "` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT, `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`email` VARCHAR(255) NOT NULL, `email` VARCHAR(255) NOT NULL,
`heslo` VARCHAR(255) NOT NULL, `heslo` VARCHAR(255) NOT NULL,
`admin` TINYINT(1) NOT NULL DEFAULT 0, `admin` TINYINT(1) NOT NULL DEFAULT 0,
`vytvoreno` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `vytvoreno` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`) UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
"); ");
// Tabulka remember me tokenů // Tabulka remember me tokenů
// selector = veřejný identifikátor pro vyhledání záznamu v DB // selector = veřejný identifikátor pro vyhledání záznamu v DB
// token_hash = bcrypt hash tajného tokenu (samotný token je jen v cookie) // token_hash = bcrypt hash tajného tokenu (samotný token je jen v cookie)
$pdo->exec(" $pdo->exec("
CREATE TABLE IF NOT EXISTS `" . DB_TABULKA_TOKENY . "` ( CREATE TABLE IF NOT EXISTS `" . DB_TABULKA_TOKENY . "` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT, `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`uzivatel_id` INT UNSIGNED NOT NULL, `uzivatel_id` INT UNSIGNED NOT NULL,
`selector` VARCHAR(32) NOT NULL, `selector` VARCHAR(32) NOT NULL,
`token_hash` VARCHAR(255) NOT NULL, `token_hash` VARCHAR(255) NOT NULL,
`expiruje` DATETIME NOT NULL, `expiruje` DATETIME NOT NULL,
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
UNIQUE KEY `selector` (`selector`), UNIQUE KEY `selector` (`selector`),
FOREIGN KEY (`uzivatel_id`) REFERENCES `" . DB_TABULKA_UZIVATELE . "` (`id`) ON DELETE CASCADE FOREIGN KEY (`uzivatel_id`)
REFERENCES `" . DB_TABULKA_UZIVATELE . "` (`id`)
ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
"); ");
// Tabulka brute force záznamů // Tabulka brute force záznamů
// Ukládají se neúspěšné pokusy o přihlášení // Ukládají se neúspěšné pokusy o přihlášení (IP adresa, email, čas)
$pdo->exec(" $pdo->exec("
CREATE TABLE IF NOT EXISTS `" . DB_TABULKA_BRUTE . "` ( CREATE TABLE IF NOT EXISTS `" . DB_TABULKA_BRUTE . "` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT, `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`ip_adresa` VARCHAR(45) NOT NULL, `ip_adresa` VARCHAR(45) NOT NULL,
`email` VARCHAR(255) NOT NULL, `email` VARCHAR(255) NOT NULL,
`cas` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, `cas` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
KEY `ip_adresa` (`ip_adresa`), KEY `ip_adresa` (`ip_adresa`),
KEY `email` (`email`) KEY `email` (`email`)
@@ -110,29 +112,33 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
"); ");
// Tabulka tokenů pro obnovu hesla // Tabulka tokenů pro obnovu hesla
// Token je platný jen omezenou dobu (viz config.php) // Token je jednorázový a platí omezenou dobu (viz config.php)
$pdo->exec(" $pdo->exec("
CREATE TABLE IF NOT EXISTS `" . DB_TABULKA_RESET . "` ( CREATE TABLE IF NOT EXISTS `" . DB_TABULKA_RESET . "` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT, `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`uzivatel_id` INT UNSIGNED NOT NULL, `uzivatel_id` INT UNSIGNED NOT NULL,
`token_hash` VARCHAR(255) NOT NULL, `token_hash` VARCHAR(255) NOT NULL,
`expiruje` DATETIME NOT NULL, `expiruje` DATETIME NOT NULL,
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
FOREIGN KEY (`uzivatel_id`) REFERENCES `" . DB_TABULKA_UZIVATELE . "` (`id`) ON DELETE CASCADE FOREIGN KEY (`uzivatel_id`)
REFERENCES `" . DB_TABULKA_UZIVATELE . "` (`id`)
ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
"); ");
// Tabulka uživatelů konkrétní služby (pokud je nastavena) // Tabulka uživatelů konkrétní služby (pokud je nastavena v config.php)
// Tato tabulka slouží pro data specifická pro tvůj projekt // Tato tabulka slouží pro data specifická pro tvůj projekt.
// (jméno, nastavení, kontaktní údaje apod.) // Zatím obsahuje jen vazbu na auth_users sloupce si přidáš sám.
if (DB_TABULKA_SLUZBA !== '') { if (DB_TABULKA_SLUZBA !== '') {
$pdo->exec(" $pdo->exec("
CREATE TABLE IF NOT EXISTS `" . DB_TABULKA_SLUZBA . "` ( CREATE TABLE IF NOT EXISTS `" . DB_TABULKA_SLUZBA . "` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT, `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`uzivatel_id` INT UNSIGNED NOT NULL, `uzivatel_id` INT UNSIGNED NOT NULL,
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
UNIQUE KEY `uzivatel_id` (`uzivatel_id`), UNIQUE KEY `uzivatel_id` (`uzivatel_id`),
FOREIGN KEY (`uzivatel_id`) REFERENCES `" . DB_TABULKA_UZIVATELE . "` (`id`) ON DELETE CASCADE FOREIGN KEY (`uzivatel_id`)
REFERENCES `" . DB_TABULKA_UZIVATELE . "` (`id`)
ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
"); ");
} }
@@ -141,6 +147,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// VYTVOŘENÍ PRVNÍHO ADMIN UŽIVATELE // VYTVOŘENÍ PRVNÍHO ADMIN UŽIVATELE
// ------------------------------------------------ // ------------------------------------------------
// Heslo zahashujeme pomocí bcrypt nikdy neukládáme plaintext!
$heslo_hash = password_hash($heslo, PASSWORD_DEFAULT); $heslo_hash = password_hash($heslo, PASSWORD_DEFAULT);
$stmt = $pdo->prepare(" $stmt = $pdo->prepare("
@@ -156,7 +163,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$novy_uzivatel_id = $pdo->lastInsertId(); $novy_uzivatel_id = $pdo->lastInsertId();
// Pokud existuje tabulka služby, vytvoříme prázdný řádek // Pokud existuje tabulka služby, vytvoříme k novému uživateli prázdný řádek
if (DB_TABULKA_SLUZBA !== '') { if (DB_TABULKA_SLUZBA !== '') {
$stmt2 = $pdo->prepare(" $stmt2 = $pdo->prepare("
INSERT INTO `" . DB_TABULKA_SLUZBA . "` INSERT INTO `" . DB_TABULKA_SLUZBA . "`
@@ -288,10 +295,10 @@ const POPISKY_SILY = [
'Velmi silné' 'Velmi silné'
]; ];
const inputHeslo = document.getElementById('heslo'); const inputHeslo = document.getElementById('heslo');
const spanSila = document.getElementById('heslo-sila'); const spanSila = document.getElementById('heslo-sila');
const tlacitko = document.getElementById('tlacitko-odeslat'); const tlacitko = document.getElementById('tlacitko-odeslat');
const spanDuvod = document.getElementById('tlacitko-duvod'); const spanDuvod = document.getElementById('tlacitko-duvod');
inputHeslo.addEventListener('input', function () { inputHeslo.addEventListener('input', function () {
const hodnota = this.value; const hodnota = this.value;