netgescon-day0/skill-netgescon/control-tower/CURRENT-205.md

74 lines
4.5 KiB
Markdown

# CURRENT-205
TASK_ID: task-email-service-password-reset
MACHINE: .205
STATO: completato
## Obiettivo Completato
1. **Attivazione e Diagnostica Servizio Posta SMTP (Google Workspace / Gmail)**:
- Configurato e bonificato `.env` con credenziali dedicate Google Workspace:
- `MAIL_MAILER=smtp`
- `MAIL_HOST=smtp.gmail.com`
- `MAIL_PORT=587`
- `MAIL_ENCRYPTION=tls`
- `MAIL_USERNAME=netgescon@gmail.com`
- `MAIL_FROM_ADDRESS=michele@netgescon.it` (NetGescon)
- Risolto il blocco delle email in coda: impostato `QUEUE_CONNECTION=sync` ed eliminata la dipendenza da daemon `queue:work` non presenti a sistema.
- Svuotata la tabella `jobs` evadendo le notifiche pendenti.
2. **Notifica di Reimpostazione Password Personalizzata in Italiano (`NetGesconResetPasswordNotification`)**:
- Creata la notifica `App\Notifications\NetGesconResetPasswordNotification`:
- Invio sincrono immediato (senza code asincrone).
- Testo in italiano, grafica formattata, pulsante "Reimposta Password", token univoco e link per copia-incolla con scadenza 60 minuti.
- Mittente ufficiale `michele@netgescon.it` (NetGescon).
- Registrato il binding in `AppServiceProvider` su `\Filament\Auth\Notifications\ResetPassword`.
- Agganciato il metodo `sendPasswordResetNotification()` su `App\Models\User`.
3. **Autonomia Cambio Password Utente**:
- **Da non autenticato**: abilitato il flusso completo su `/admin-filament/password-reset/request` (link "Hai dimenticato la password?" nella maschera di login).
- **Da autenticato**: abilitata la schermata profilo `/admin-filament/profile` tramite `->profile()` in `AdminFilamentPanelProvider`, consentendo il cambio password autonomo direttamente dal menu utente in alto a destra.
4. **Allineamento Utenze Google Workspace / NetGescon**:
- Utenza Workspace `michele@netgescon.it` (User ID 25): attiva con ruoli `super-admin`, `amministratore`, `admin`.
- Utenza Google `netgescon@gmail.com` (User ID 35): registrata e attiva con ruolo `super-admin`.
- Entrambe le utenze possono richiedere e ricevere la reimpostazione password o accedere in autonomia.
5. **Comandi Artisan di Diagnostica e Invio**:
- `php artisan netgescon:test-mail {email?}`: invia un'email diagnostica SMTP per testare la connettività Google Workspace.
- `php artisan netgescon:send-password-reset {email}`: genera il token crittografato e invia il link di ripristino all'email richiesta.
## Output del Giro Operativo
ESITO_205: riuscito
TASK_ID: task-email-service-password-reset
REPOSITORY: ssh://git@git.netgescon.it:2222/michele/netgescon-day0.git
BRANCH: stabilization/205-zero
COMMIT: 1970594
FILE_O_AREE_TOCCATE:
- app/Console/Commands/SendPasswordResetEmailCommand.php
- app/Console/Commands/TestMailCommand.php
- app/Notifications/NetGesconResetPasswordNotification.php
- app/Models/User.php
- app/Providers/AppServiceProvider.php
- app/Providers/Filament/AdminFilamentPanelProvider.php
- tests/Feature/PasswordResetAndEmailServiceTest.php
- skill-netgescon/control-tower/CURRENT-205.md
TEST_ESEGUITI:
- ./vendor/bin/pest tests/Feature/PasswordResetAndEmailServiceTest.php tests/Feature/FornitoreTecnorepairAndIntegrationsTest.php tests/Feature/FornitoreContabilitaSerialiImportTest.php tests/Feature/StrutturaDatabaseAndStorageTest.php tests/Feature/NominativiAndFeMatchingTest.php tests/Feature/PostaImapWebmailAndProtocolloTest.php tests/Feature/ContabilitaRelazionaleOrdinarieTest.php tests/Feature/BpmBankParserAndImporterTest.php tests/Feature/UnitaGestioneTemporaleTest.php tests/Feature/CatastoHubDbDrivenTest.php tests/Feature/UnitaCondominoInquilinoRoleToggleTest.php tests/Feature/UnitaImmobiliarePageTest.php tests/Feature/BenedettoBonificaIdempotenteTest.php tests/Feature/ControlTowerPollCommandTest.php (46 passed, 285 assertions)
GATE_STATISTICS:
- SMTP_GMAIL_WORKSPACE: Connessione smtp.gmail.com:587 verificata e funzionante.
- PASSWORD_RESET_FLOW: Richiesta da login (/admin-filament/password-reset/request) e da profilo (/admin-filament/profile) operativi.
- SYNC_DISPATCH: Notifiche recapitate istantaneamente senza dipendenza da code background.
- TEST_SUITE: 46 test Feature passati (285 asserzioni, 100% pass).
BLOCCO_DATI: no
BLOCCO_CONTRATTO: no
RISCHI_APERTI: nessuno
## Prossimo Passo per .200 (Validazione)
- Eseguire il checkout del branch `stabilization/205-zero`.
- Eseguire la suite di test Pest (46 passed, 285 assertions).
- Eseguire `php artisan netgescon:test-mail` per verificare la connettività SMTP Google.
- Verificare la ricezione del link di reset e la modifica autonoma della password.