Controller_Security
extends Controller
in package
Kontroler zajišťující bezpečnostní mechanismy aplikace.
- Zpracovává:
- Dvoufázové ověření uživatele (odesílání a verifikace kódů).
- Změnu hesel přihlášených uživatelů.
- Kompletní proces zapomenutého hesla (Reset Password Workflow).
- Bezpečné odstranění uživatelského účtu.
Table of Contents
Properties
- $model : Model
- $code : int
- $codeVerif : bool
- $email : string
- $error : string
- $resetHeslaStage : int
Methods
- __construct() : mixed
- Konstruktor bezpečnostního kontroleru.
- buildPagination() : array<string|int, mixed>
- Logika pro výpočet a vygenerování pole stránek pro stránkování (pagination).
- codeVerify() : mixed
- Ověřuje kód zadaný uživatelem z e-mailu.
- deleteUser() : mixed
- Zpracuje smazání uživatelského účtu.
- deleteUser_page() : mixed
- Zobrazí stránku pro smazání účtu.
- emailCode() : mixed
- Generuje a odesílá 6místný ověřovací kód na e-mail uživatele.
- sessionLoginStart() : void
- Nastaví klíčové údaje o uživateli do globální proměnné $_SESSION po úspěšném přihlášení.
- sessionStatus() : mixed
- Zkontroluje a v případě potřeby zahájí PHP session.
- showHomePage() : mixed
- Zobrazí úvodní stránku aplikace.
- showResetPage() : mixed
- Hlavní metoda pro proces resetování zapomenutého hesla.
- updatePassw() : mixed
- Zpracuje požadavek na změnu hesla uživatele.
- updatePassw_page() : mixed
- Zobrazí stránku pro změnu hesla.
- preventCache() : void
- Nastaví HTTP hlavičky pro zabránění ukládání obsahu stránky do mezipaměti prohlížeče (cache).
- sendResetCode() : mixed
- Soukromá metoda pro odeslání e-mailu specificky pro reset hesla.
Properties
$model
protected
Model
$model
Instance databázového modelu pro přístup k datům
$code
private
int
$code
Proměnné pro řízení fází resetu hesla a uložení kódu
$codeVerif
private
bool
$codeVerif
Příznak úspěšného ověření kódu
private
string
$email
Pomocné proměnné pro chybové hlášky a e-mailovou adresu
$error
private
string
$error
Pomocné proměnné pro chybové hlášky a e-mailovou adresu
$resetHeslaStage
private
int
$resetHeslaStage
Proměnné pro řízení fází resetu hesla a uložení kódu
Methods
__construct()
Konstruktor bezpečnostního kontroleru.
public
__construct(mixed $model) : mixed
Inicializuje výchozí stavy pro bezpečnostní operace.
- @param Model $model Instance databázového modelu
Parameters
- $model : mixed
buildPagination()
Logika pro výpočet a vygenerování pole stránek pro stránkování (pagination).
public
buildPagination(int $current, int $total) : array<string|int, mixed>
Zajišťuje, aby se v navigaci zobrazoval správný rozsah stránek kolem aktuální pozice.
- @param int $current Aktuální číslo stránky, na které se uživatel nachází
Parameters
- $current : int
- $total : int
-
Celkový počet dostupných stránek
Return values
array<string|int, mixed> —Pole obsahující strukturu stránek pro vykreslení ve view
codeVerify()
Ověřuje kód zadaný uživatelem z e-mailu.
public
codeVerify() : mixed
Kontroluje shodu kódu a časovou platnost expirace.
deleteUser()
Zpracuje smazání uživatelského účtu.
public
deleteUser() : mixed
Po ověření aktuálního hesla smaže data a zruší celou session včetně cookies.
deleteUser_page()
Zobrazí stránku pro smazání účtu.
public
deleteUser_page() : mixed
Podmínkou je přihlášení a úspěšné předchozí ověření kódem (2FA).
emailCode()
Generuje a odesílá 6místný ověřovací kód na e-mail uživatele.
public
emailCode() : mixed
Využívá knihovnu PHPMailer a SMTP konfiguraci z .env souboru. Kód má omezenou platnost (5 minut).
- @return void
sessionLoginStart()
Nastaví klíčové údaje o uživateli do globální proměnné $_SESSION po úspěšném přihlášení.
public
sessionLoginStart(mixed $id, string $email, string $name, string $surname, string $role) : void
Inicializuje také pomocné proměnné pro procesy ověřování a profilu.
- @param int $id Unikátní ID uživatele z databáze
Parameters
- $id : mixed
- $email : string
-
Přihlašovací e-mail
- $name : string
-
Jméno uživatele
- $surname : string
-
Příjmení uživatele
- $role : string
-
Role uživatele (admin / uživatel)
sessionStatus()
Zkontroluje a v případě potřeby zahájí PHP session.
public
sessionStatus() : mixed
Brání chybám typu "headers already sent" kontrolou stavu PHP_SESSION_NONE.
- @return void
showHomePage()
Zobrazí úvodní stránku aplikace.
public
showHomePage() : mixed
Pokud je uživatel již přihlášen, automaticky ho přesměruje na jeho profil. Zároveň čistí dočasné proměnné z procesu resetování hesla.
- @return void
showResetPage()
Hlavní metoda pro proces resetování zapomenutého hesla.
public
showResetPage() : mixed
Implementuje třífázový stavový automat (fáze 1-3):
- Zadání e-mailu.
- Ověření kódu z e-mailu.
- Nastavení nového hesla.
updatePassw()
Zpracuje požadavek na změnu hesla uživatele.
public
updatePassw() : mixed
Provádí hashování nového hesla a kontroluje shodu s potvrzením.
updatePassw_page()
Zobrazí stránku pro změnu hesla.
public
updatePassw_page() : mixed
Podmínkou je přihlášení a úspěšné předchozí ověření kódem (2FA).
preventCache()
Nastaví HTTP hlavičky pro zabránění ukládání obsahu stránky do mezipaměti prohlížeče (cache).
protected
preventCache() : void
Důležité pro stránky s citlivými údaji po odhlášení.
- @return void
sendResetCode()
Soukromá metoda pro odeslání e-mailu specificky pro reset hesla.
private
sendResetCode(mixed $email) : mixed
Podobná logice emailCode(), ale určená pro nepřihlášené uživatele.
- @param string $email E-mail adresáta
Parameters
- $email : mixed