diff --git a/auth/admin.php b/auth/admin.php index 96e4b39..92b5ef2 100644 --- a/auth/admin.php +++ b/auth/admin.php @@ -2,15 +2,6 @@ // ============================================================ // ADMINISTRAČNÍ ROZHRANÍ // ============================================================ -// Tato stránka je dostupná pouze přihlášenému adminovi. -// Umožňuje: -// - zobrazit seznam uživatelů -// - založit nového uživatele -// - změnit heslo uživatele -// - smazat uživatele -// - zobrazit konfiguraci systému (citlivé údaje skryté) -// - odeslat testovací email -// ============================================================ require_once __DIR__ . '/config.php'; require_once __DIR__ . '/db.php'; @@ -20,12 +11,8 @@ require_once __DIR__ . '/auth.php'; // ------------------------------------------------------------ // KONTROLA: Je přihlášený uživatel admin? // ------------------------------------------------------------ -// auth.php již zajistil, že uživatel je přihlášen (nebo přesměroval). -// Zde navíc kontrolujeme příznak admin. if (!$auth_uzivatel['admin']) { - // Uživatel je přihlášen, ale není admin – - // zobrazíme obecnou chybu (nechceme prozradit, že stránka existuje) http_response_code(404); die('
Stránka nebyla nalezena.
'); } @@ -40,15 +27,14 @@ if (empty($_SESSION['csrf_token'])) { $csrf_token = $_SESSION['csrf_token']; // ------------------------------------------------------------ -// ZPRACOVÁNÍ AKCÍ (POST požadavky) +// ZPRACOVÁNÍ AKCÍ // ------------------------------------------------------------ -$zprava = ''; // zpráva o úspěchu -$chyba = ''; // chybová hláška +$zprava = ''; +$chyba = ''; if ($_SERVER['REQUEST_METHOD'] === 'POST') { - // -- Ověření CSRF tokenu ---------------------------------- $csrf_z_formulare = $_POST['csrf_token'] ?? ''; if (!hash_equals($csrf_token, $csrf_z_formulare)) { $chyba = 'Neplatný požadavek. Zkuste stránku obnovit.'; @@ -68,25 +54,19 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $heslo2 = $_POST['heslo2'] ?? ''; $admin = isset($_POST['admin']) ? 1 : 0; - // Validace emailu if (empty($email)) { $chyba = 'Email nesmí být prázdný.'; } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $chyba = 'Email není platná emailová adresa.'; - } - - // Validace hesla - if (empty($chyba) && empty($heslo)) { + } elseif (empty($heslo)) { $chyba = 'Heslo nesmí být prázdné.'; - } elseif (empty($chyba) && mb_strlen($heslo) < HESLO_MIN_DELKA) { + } elseif (mb_strlen($heslo) < HESLO_MIN_DELKA) { $chyba = 'Heslo musí mít alespoň ' . HESLO_MIN_DELKA . ' znaků.'; - } elseif (empty($chyba) && $heslo !== $heslo2) { + } elseif ($heslo !== $heslo2) { $chyba = 'Hesla se neshodují.'; } if (empty($chyba)) { - - // Kontrola, zda email již neexistuje $stmt = $pdo->prepare(" SELECT COUNT(*) AS pocet FROM `" . DB_TABULKA_UZIVATELE . "` @@ -99,7 +79,6 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { } if (empty($chyba)) { - try { $heslo_hash = password_hash($heslo, PASSWORD_DEFAULT); @@ -117,7 +96,6 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $novy_id = $pdo->lastInsertId(); - // Vytvoříme prázdný řádek v tabulce služby if (DB_TABULKA_SLUZBA !== '') { $stmt2 = $pdo->prepare(" INSERT INTO `" . DB_TABULKA_SLUZBA . "` @@ -157,7 +135,6 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { } if (empty($chyba)) { - try { $heslo_hash = password_hash($heslo, PASSWORD_DEFAULT); @@ -171,8 +148,6 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { ':id' => $uzivatel_id, ]); - // Po změně hesla smažeme všechny remember me tokeny - // tohoto uživatele – odhlásíme ho ze všech zařízení $stmt2 = $pdo->prepare(" DELETE FROM `" . DB_TABULKA_TOKENY . "` WHERE `uzivatel_id` = :uzivatel_id @@ -197,19 +172,12 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { if ($uzivatel_id <= 0) { $chyba = 'Neplatné ID uživatele.'; - } - - // Admin nesmí smazat sám sebe - if (empty($chyba) && $uzivatel_id === (int) $auth_uzivatel['id']) { + } elseif ($uzivatel_id === (int) $auth_uzivatel['id']) { $chyba = 'Nemůžeš smazat svůj vlastní účet.'; } if (empty($chyba)) { - try { - // Díky FOREIGN KEY s ON DELETE CASCADE se automaticky - // smažou i záznamy v auth_remember_tokens a auth_password_resets - // a v tabulce služby (users) $stmt = $pdo->prepare(" DELETE FROM `" . DB_TABULKA_UZIVATELE . "` WHERE `id` = :id @@ -290,17 +258,12 @@ try {OK:
-Chyba:
Hodnoty jsou načteny z auth/config.php. Citlivé údaje jsou skryté – zobrazíš je kliknutím.
| Konstanta | -Hodnota | -
|---|---|
| DB_HOST | -|
| DB_NAME | -|
| DB_USER | -|
| Konstanta | Hodnota |
| DB_HOST | |
| DB_NAME | |
| DB_USER | |
| DB_PASS | - [skryto] - + |
| DB_TABULKA_UZIVATELE | -|
| DB_TABULKA_TOKENY | -|
| DB_TABULKA_BRUTE | -|
| DB_TABULKA_RESET | -|
| DB_TABULKA_SLUZBA | -|
| PROJEKT_NAZEV | -|
| PROJEKT_URL | -|
| AUTH_LOGIN_URL | -|
| AUTH_LOGOUT_URL | -|
| AUTH_REDIRECT_PO_PRIHLASENI | -|
| REGISTRACE_OTEVRENA | -|
| VYZADOVAT_PRIHLASENI | -|
| SESSION_NAZEV | -|
| SESSION_EXPIRACE | -sekund - ( hodin) |
| REMEMBER_EXPIRACE | -sekund - ( dní) |
| BRUTE_MAX_POKUSU | -|
| BRUTE_OKNO | -sekund - ( minut) |
| HESLO_MIN_SILA | -/ 4 |
| HESLO_MIN_DELKA | -znaků |
| MAIL_ODESILATEL | -|
| MAIL_ODESILATEL_JMENO | -|
| MAIL_TEST_ADRESA | -|
| AUTH_CSS | -|
| DB_TABULKA_UZIVATELE | |
| DB_TABULKA_TOKENY | |
| DB_TABULKA_BRUTE | |
| DB_TABULKA_RESET | |
| DB_TABULKA_SLUZBA | |
| PROJEKT_NAZEV | |
| PROJEKT_URL | |
| AUTH_LOGIN_URL | |
| AUTH_LOGOUT_URL | |
| AUTH_REGISTRACE_URL | |
| AUTH_RESET_URL | |
| AUTH_REDIRECT_PO_PRIHLASENI | |
| REGISTRACE_OTEVRENA | |
| VYZADOVAT_PRIHLASENI | |
| SESSION_NAZEV | |
| SESSION_EXPIRACE | s ( h) |
| REMEMBER_EXPIRACE | s ( dní) |
| BRUTE_MAX_POKUSU | |
| BRUTE_OKNO | s ( min) |
| HESLO_MIN_SILA | / 4 |
| HESLO_MIN_DELKA | znaků |
| MAIL_ODESILATEL | |
| MAIL_ODESILATEL_JMENO | |
| MAIL_TEST_ADRESA | |
| AUTH_CSS |
Odešle testovací email na adresu -(nastaveno v config.php jako MAIL_TEST_ADRESA).
+Odešle testovací email na adresu .