78 lines
2.2 KiB
Markdown
78 lines
2.2 KiB
Markdown
# 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
|