fix log
This commit is contained in:
168
LOG_SYSTEM.md
Normal file
168
LOG_SYSTEM.md
Normal file
@@ -0,0 +1,168 @@
|
||||
# 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;
|
||||
```
|
||||
Reference in New Issue
Block a user