169 lines
4.9 KiB
Markdown
169 lines
4.9 KiB
Markdown
# Sistema di Logging - Territory Manager
|
|
|
|
## Panoramica
|
|
|
|
Il sistema di logging è stato implementato per tracciare tutte le azioni eseguite dagli utenti all'interno dell'applicazione Territory Manager.
|
|
|
|
## Funzionalità Implementate
|
|
|
|
### 1. Database
|
|
- **Tabella `activity_logs`**: Memorizza tutti i log delle attività
|
|
- `user_id`: ID dell'utente che ha eseguito l'azione
|
|
- `username`: Nome utente per riferimento rapido
|
|
- `action_type`: Tipo di azione (login, logout, create, update, delete, assign, return, export)
|
|
- `action_description`: Descrizione dettagliata dell'azione
|
|
- `entity_type`: Tipo di entità coinvolta (territory, assignment, user, config, auth)
|
|
- `entity_id`: ID dell'entità coinvolta
|
|
- `ip_address`: Indirizzo IP dell'utente
|
|
- `user_agent`: User agent del browser
|
|
- `created_at`: Timestamp dell'azione
|
|
|
|
### 2. Funzioni di Logging (functions.php)
|
|
|
|
#### `logActivity($action_type, $action_description, $entity_type, $entity_id)`
|
|
Registra un'attività nel log. Cattura automaticamente:
|
|
- Utente corrente dalla sessione
|
|
- Indirizzo IP
|
|
- User Agent del browser
|
|
|
|
#### `getActivityLogs($filters, $page, $per_page)`
|
|
Recupera i log con filtri e paginazione. Supporta filtri per:
|
|
- Utente
|
|
- Tipo di azione
|
|
- Tipo di entità
|
|
- Intervallo di date
|
|
- Ricerca testuale
|
|
|
|
### 3. Pagina Visualizzazione Log (logs.php)
|
|
**Accesso**: Solo amministratori
|
|
|
|
Funzionalità:
|
|
- Visualizzazione log con tabella paginata
|
|
- Filtri multipli:
|
|
- Ricerca testuale
|
|
- Utente
|
|
- Tipo di azione
|
|
- Tipo di entità
|
|
- Data da/a
|
|
- Paginazione (50 log per pagina)
|
|
- Badge colorati per tipo di azione
|
|
- Link per esportazione PDF
|
|
|
|
### 4. Esportazione PDF (export_logs_pdf.php)
|
|
**Accesso**: Solo amministratori
|
|
|
|
Funzionalità:
|
|
- Esporta tutti i log filtrati in formato PDF
|
|
- Include gli stessi filtri della pagina di visualizzazione
|
|
- Genera report con:
|
|
- Elenco completo dei log
|
|
- Riepilogo per tipo di azione
|
|
- Riepilogo per utente
|
|
- Timestamp di generazione
|
|
- Informazioni sui filtri applicati
|
|
|
|
### 5. Azioni Tracciate
|
|
|
|
#### Autenticazione
|
|
- `login`: Accesso al sistema
|
|
- `logout`: Uscita dal sistema
|
|
|
|
#### Territori
|
|
- `create`: Creazione nuovo territorio
|
|
- `update`: Modifica territorio esistente
|
|
- `delete`: Eliminazione territorio
|
|
|
|
#### Assegnazioni
|
|
- `assign`: Assegnazione territorio a un proclamatore
|
|
- `return`: Riconsegna territorio
|
|
|
|
#### Utenti
|
|
- `create`: Creazione nuovo utente
|
|
- `update`: Modifica password
|
|
- `delete`: Eliminazione utente
|
|
|
|
#### Configurazioni
|
|
- `update`: Modifica configurazioni di sistema
|
|
|
|
#### Log
|
|
- `export`: Esportazione log in PDF
|
|
|
|
## Integrazione
|
|
|
|
Il logging è stato integrato in tutte le operazioni principali:
|
|
- `login.php`: Log di accesso
|
|
- `logout.php`: Log di uscita
|
|
- `territories.php`: Log di creazione, modifica ed eliminazione territori
|
|
- `assignments.php`: Log di assegnazione e riconsegna
|
|
- `settings.php`: Log di modifiche configurazioni e gestione utenti
|
|
- `export_logs_pdf.php`: Log di esportazione
|
|
|
|
## Menu di Navigazione
|
|
|
|
Il link "Log" è stato aggiunto nel menu principale, visibile solo agli amministratori.
|
|
|
|
## Utilizzo
|
|
|
|
### Visualizzare i Log
|
|
1. Accedere come amministratore
|
|
2. Cliccare su "Log" nel menu
|
|
3. Utilizzare i filtri per trovare log specifici
|
|
|
|
### Esportare i Log
|
|
1. Dalla pagina Log, applicare eventuali filtri
|
|
2. Cliccare su "Esporta PDF"
|
|
3. Si aprirà una nuova finestra con il report
|
|
4. Utilizzare il pulsante "Stampa / Salva come PDF" del browser
|
|
|
|
## Note Tecniche
|
|
|
|
- Il sistema cattura automaticamente IP e User Agent per tracciabilità
|
|
- I log sono legati agli utenti tramite foreign key (cascade on delete)
|
|
- La paginazione limita il carico sul database
|
|
- L'export PDF è ottimizzato per la stampa (orientamento landscape)
|
|
- I filtri sono persistenti durante la navigazione
|
|
|
|
## Sicurezza
|
|
|
|
- Solo gli amministratori possono accedere ai log
|
|
- I log non possono essere modificati o eliminati dall'interfaccia
|
|
- Tutte le operazioni sensibili vengono registrate
|
|
- Gli IP vengono tracciati per audit trail
|
|
|
|
## Manutenzione
|
|
|
|
Per pulire vecchi log (da eseguire manualmente nel database):
|
|
```sql
|
|
-- Elimina log più vecchi di 1 anno
|
|
DELETE FROM activity_logs WHERE created_at < DATE_SUB(NOW(), INTERVAL 1 YEAR);
|
|
```
|
|
|
|
## Database Migration
|
|
|
|
Per applicare le modifiche al database esistente:
|
|
```sql
|
|
-- Eseguire lo script SQL aggiornato
|
|
SOURCE database.sql;
|
|
```
|
|
|
|
O solo la parte relativa ai log:
|
|
```sql
|
|
CREATE TABLE IF NOT EXISTS activity_logs (
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|
user_id INT NOT NULL,
|
|
username VARCHAR(50) NOT NULL,
|
|
action_type VARCHAR(50) NOT NULL,
|
|
action_description TEXT NOT NULL,
|
|
entity_type VARCHAR(50),
|
|
entity_id INT,
|
|
ip_address VARCHAR(45),
|
|
user_agent TEXT,
|
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
|
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
|
|
INDEX idx_user (user_id),
|
|
INDEX idx_action_type (action_type),
|
|
INDEX idx_created_at (created_at),
|
|
INDEX idx_entity (entity_type, entity_id)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
|
```
|