final stage

This commit is contained in:
2026-06-01 16:11:29 +02:00
parent 5557650824
commit 3424c1c9f7
21 changed files with 5010 additions and 47 deletions
+90 -6
View File
@@ -6,12 +6,22 @@ Laravel 13 / PHP 8.4 project for parish management (Glastree). Full codebase exi
---
## Issues Open
1. **Drive-Segreteria-ADIM (#3)**: Root ha 0 elementi. Verificare root_folder_id nelle impostazioni repository.
2. **Nextcloud_MB (#4)**: Connessione "Unauthorized" dopo fix authType — credenziali da verificare (username con @).
3. **Nextcloud username**: L'utente ha `@` nel nome utente. Sabre DAV Client usa `CURLOPT_USERPWD``user:password` in Basic Auth, il `@` non causa problemi in questo contesto (non è in una URL).
*Nessuna issue aperta.*
---
### 01 Giugno 2026 - Guida Docker in Help Page
- **Aggiunto**: Nuovo tab "Docker" nella pagina `/help` con guida completa per creare un'immagine Docker
- **Contenuto**:
- Due opzioni affiancate: SQLite (leggero/demo) e MySQL (standard/produzione)
- Dockerfile basato su `php:8.4-apache` con pdo_mysql + pdo_sqlite, composer, asset compilati
- Entrypoint script `docker-entrypoint.sh` che rileva automaticamente `DB_CONNECTION` e configura .env di conseguenza; attende MySQL via PDO poll se necessario
- Seeder `DockerBaseDataSeeder` con tipologie documenti (7), tipologie eventi (8) e ruoli (8)
- Docker Compose in due varianti (Opzione A — SQLite, Opzione B — MySQL con healthcheck e volume separato)
- Istruzioni build, avvio con `-f` per scegliere il compose, e creazione primo utente amministratore via CLI
- **Files modificati**:
- `resources/views/help/index.blade.php`: tab-pane `#help-docker` riscritto con doppia opzione SQLite/MySQL
## System Status
@@ -223,8 +233,7 @@ php artisan route:list --name=email
---
## Known Issues / TODO
1. SMTP authentication con Infomaniak - verificare credenziali corrette
2. Invio email richiede password SMTP corretta nel form impostazioni
*Nessuna issue nota.*
---
@@ -1002,4 +1011,79 @@ php artisan route:list --name=email
- `routes/web.php`: aggiunta route `storage-repositories.import`
- `resources/views/documenti/index.blade.php`: pulsanti Salva in grid+list, funzione `importRepoFile()`, variabile JS `cartelle`
(Last updated: 29 Maggio 2026 - Import file remoto come documento locale)
(Last updated: 01 Giugno 2026 - Sistema Backup Completo + Help Header + Script Migrazione)
### 01 Giugno 2026 - Sistema Backup Completo per Migrazione
- **Header navbar**: Aggiunta icona `fa-question-circle` che linka a `route('help')` — posizionata nella navbar superiore prima della campanella notifiche
- **Sidebar**: Aggiunto link "Backup" sotto Admin (protetto da `canManage('settings')`)
- **BackupController** (`app/Http/Controllers/Admin/BackupController.php`): 8 metodi:
- `index()` — lista backup + form config
- `run()` — esegue backup manuale
- `download(filename)` — scarica ZIP
- `destroy(filename)` — elimina backup
- `updateConfig()` — salva impostazioni backup
- `toggleAuto()` — abilita/disabilita backup automatico
- `saveAutoConfig()` — salva frequenza e ora backup automatico
- `downloadMigrationScript()` — (JSON) restituisce script di migrazione
- **Backup view** (`resources/views/admin/backup/index.blade.php`):
- Tabella backup con file, data, dimensione, contenuto, azioni (scarica/elimina)
- Card configurazione: percorso, ritenzione, toggle files/.env
- Card backup automatico: toggle on/off, frequenza (daily/weekly/monthly), ora
- Card migrazione: link alla guida
- Alert informativo sul cron necessario
- **BackupRunCommand** (`app/Console/Commands/BackupRunCommand.php`): `php artisan backup:run` con opzioni `--filename=`, `--no-files`, `--no-env`
- **Console scheduler** (`routes/console.php`): backup automatico con `dailyAt()` e `withoutOverlapping()`, controlla `backup_auto_enabled`
- **Route backup** (7 rotte sotto `admin/`):
- `GET /admin/backup` → backup.index
- `POST /admin/backup/run` → backup.run
- `GET /admin/backup/download/{filename}` → backup.download
- `DELETE /admin/backup/{filename}` → backup.destroy
- `POST /admin/backup/config` → backup.updateConfig
- `POST /admin/backup/toggle-auto` → backup.toggleAuto
- `POST /admin/backup/save-auto` → backup.saveAutoConfig
- **Guida help**: Nuovo tab "Backup e Migrazione" con:
- Spiegazione contenuto backup (tabella)
- Backup via UI e via CLI
- Backup automatico e requisiti cron
- **⚠️ Avviso APP_KEY**: blocco informativo su rigenerazione
- **Procedura migrazione completa** in 12 passi (LAMP)
- Riferimento a `installa-glastree.sh`
- **PHP Web Installer** (`installer/`):
- Sostituisce il vecchio script bash, ora rimosso
- **index.php**: entry point — se .env esiste, redirect a login; altrimenti avvia wizard
- **setup.php**: wizard multi-step con sessione PHP, routing via `?step=N`
- **functions.php**: 15 helper functions
- **assets/style.css**: stile AdminLTE-like, responsive
- **Step 1 — Benvenuto**: scegli Fresh Install o Restore da Backup (option cards)
- **Step 2 — Requisiti**: verifica PHP 8.2+, estensioni (pdo_mysql, mbstring, xml, curl, zip, gd, fileinfo), permessi storage e bootstrap/cache
- **Step 3 — Database**: due modalita:
- A: Crea nuovo (root MySQL → crea DB + utente)
- B: Usa esistente (test PDO → salva .env)
- **Step 4 — Installazione**:
- Fresh: `key:generate`, `migrate`, `db:seed`, `storage:link` via bootstrap Laravel
- Backup: upload ZIP o percorso server → extract, import SQL, copy files, merge .env
- **Step 5 — Amministratore**:
- Fresh: form creazione super-admin (nome, email, password con validazione)
- Backup: mostra utenti esistenti dal DB, opzione salta o crea nuovo
- **Step 6 — Finalizzazione**: `config:cache`, `route:cache`, `view:cache`, **self-destruct** (elimina installer/)
- **Sicurezza**: self-destruct dopo installazione, blocco re-install se .env esiste, CSRF token, HTTPS warning, password mai esposte in HTML dopo invio
- **Migration backup**: `2026_06_01_100155_add_backup_settings_to_app_settings` estesa con `backup_auto_enabled`, `backup_auto_frequency`, `backup_auto_hour`
- **.env.example**: aggiornato — default MySQL invece di SQLite, locale it, righe minime essenziali
- **Guida Installazione**: nuovo tab nella help page con:
- Requisiti server (tabella)
- Installazione passo-passo (LAMP, clone, composer, Apache, wizard)
- Spiegazione delle due modalita (fresh/backup)
- Cosa fare dopo (SSL, configurazione, cron)
- Risoluzione problemi comuni (500 error, APP_KEY, mod_rewrite)
- **Files creati** (installer/):
- `installer/index.php`
- `installer/setup.php`
- `installer/functions.php`
- `installer/assets/style.css`
- **Files rimossi**: `installa-glastree.sh`
- **Files modificati**:
- `.env.example`: default MySQL, pulizia righe superflue
- `database/migrations/2026_06_01_100155_add_backup_settings_to_app_settings.php`: +3 colonne auto-backup
- `resources/views/help/index.blade.php`: nuovo tab Installazione
- **Stato**: ✅ PHP syntax OK su tutti i file. ✅ view:cache OK. ✅ 7 route backup registrate. ✅ `php artisan backup:run` registrato. ✅ installer/ struttura completa.