# IVAO Training Dashboard (non ufficiale)

Dashboard in PHP + MySQL + Bootstrap 5 per gestire i training: gli studenti li richiedono e leggono i commenti, i trainer assegnano la data e scrivono i commenti per categoria.

## Struttura

```
ivao-training/
├── config/config.php          # credenziali DB e impostazioni
├── database/schema.sql        # tabelle + dati iniziali
├── src/                       # logica (fuori dalla web root)
│   ├── bootstrap.php          # sessione, config, include
│   ├── db.php                 # connessione PDO
│   ├── auth.php               # login, ruoli, logout
│   └── helpers.php            # escape, CSRF, flash, formattazione
├── templates/                 # header, footer, form di login condiviso
├── public/                    # UNICA cartella esposta dal web server
│   ├── index.php  login.php  trainer_login.php  register.php  logout.php
│   ├── student/   dashboard.php  request_training.php  view_training.php
│   ├── trainer/   dashboard.php  schedule.php  evaluate.php
│   └── assets/css/style.css
└── tools/create_user.php      # creazione utenti da CLI
```

## Installazione

1. Crea database e tabelle: `mysql -u root -p < database/schema.sql`
2. Crea un utente MySQL dedicato con permessi sul database `ivao_training`.
3. Modifica `config/config.php` (credenziali DB, `base_url` se non sei nella root).
4. Imposta la **document root** del web server su `public/`.
5. Crea il primo trainer: `php tools/create_user.php trainer 123456 Mario Rossi mario@example.com`
6. Gli studenti si registrano da soli da `register.php`.

Requisiti: PHP 8.1+ (estensioni PDO MySQL, mbstring), MySQL 8 / MariaDB 10.4+.

## Flusso

- **Studente**: registrazione → richiede training → vede stato e data → a training concluso legge commenti per categoria ed esito.
- **Trainer**: vede le richieste in attesa → assegna data/ora (con controllo sovrapposizioni) → dopo il training compila commenti per categoria, valutazione 1-5, esito e commento finale.

## Sicurezza già inclusa

Query preparate (PDO), `password_hash`, token CSRF su tutti i form, escape output, cookie di sessione `HttpOnly`/`SameSite`, rigenerazione ID sessione al login, controllo ruolo e proprietà dei dati su ogni pagina.

## Idee per i passi successivi

Limite tentativi di login, reset password via email, notifiche email alla assegnazione della data, pannello admin per gestire tipologie/categorie e creare trainer, esportazione PDF del report finale.
