# System Logowania 2FA Prosta aplikacja demonstracyjna logowania dwuskładnikowego w PHP. ## Wymagania - PHP 7.4 lub nowszy - SQLite3 - Serwer WWW (Apache/Nginx) lub wbudowany serwer PHP ## Instalacja 1. Skopiuj pliki na serwer WWW 2. Upewnij się, że katalog `database/` ma uprawnienia do zapisu 3. Przejdź do `/inicjalizacja` (lub `index.php?action=init`) aby zainicjalizować bazę danych 4. Zaloguj się używając testowego konta ## Przyjazne URLe Aplikacja wspiera przyjazne URLe (friendly URLs): - `/` lub `/logowanie` - ekran logowania - `/uwierzytelnianie` - proces uwierzytelniania - `/weryfikacja` - ekran weryfikacji 2FA - `/weryfikuj-kod` - weryfikacja kodu - `/panel` lub `/dashboard` - panel użytkownika - `/wyloguj-sie` - wylogowanie - `/inicjalizacja` - inicjalizacja bazy danych Stare URLe z parametrem `?action=` nadal działają dla kompatybilności. ## Dane testowe - **Login:** projectpro - **Hasło:** testowehaslo ## Struktura projektu ``` projektphp/ ├── controllers/ # Kontrolery MVC │ ├── InitController.php │ ├── LoginController.php │ └── DashboardController.php ├── models/ # Modele danych │ ├── Database.php │ └── User.php ├── views/ # Widoki PHP │ ├── layout.php │ ├── login.php │ ├── verify.php │ └── dashboard.php ├── public/ # Publiczne zasoby │ ├── css/ │ │ └── style.css │ └── js/ │ └── app.js ├── database/ # Baza danych SQLite │ └── database.db ├── .htaccess # Konfiguracja Apache └── index.php # Punkt wejścia ``` ## Proces logowania 1. Użytkownik wprowadza login i hasło 2. System generuje 6-cyfrowy kod weryfikacyjny 3. Kod wyświetlany jest w konsoli przeglądarki (tryb testowy) 4. Po wprowadzeniu prawidłowego kodu użytkownik jest zalogowany 5. Kod wygasa po 15 minutach ## Uwagi - W trybie testowym kod weryfikacyjny jest wyświetlany w konsoli przeglądarki (F12) - W produkcji kod powinien być wysyłany emailem - Hasła są hashowane przy użyciu `password_hash()` - Sesje są bezpiecznie zarządzane