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

5.8 KiB

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: cfc6060 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
  • config/database.php
  • .gitignore
  • database/migrations/2025_12_22_120000_add_conto_id_to_contabilita_movimenti_banca.php
  • database/migrations/2025_12_22_120010_add_conto_id_to_contabilita_saldi_conti.php
  • database/migrations/2026_01_05_000011_add_pagamenti_links_to_contabilita_fatture_fornitori.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 (13 passed, 67 assertions)
  • ./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)
  • Verifica migrazioni PostgreSQL su produzione (svr-netgescon): 374/374 migrazioni eseguite (NO PENDING MIGRATIONS).
  • Test SMTP live su produzione: php artisan netgescon:test-mail michele@netgescon.it (email recapitata con successo).
  • Test reset password live su produzione: php artisan netgescon:send-password-reset netgescon@gmail.com e michele@netgescon.it (link generati e inviati con successo).
  • Test HTTP live: https://app.netgescon.it/admin-filament/login e /admin-filament/password-reset/request (HTTP 200 OK). GATE_STATISTICS:
  • SMTP_GMAIL_WORKSPACE: Connessione smtp.gmail.com:587 verificata e funzionante in locale e produzione.
  • POSTGRESQL_PRODUCTION_MIGRATIONS: 100% completate senza errori di dialetto su svr-netgescon.
  • GESCON_IMPORT_ISOLATION: Configurazione SQLite isolata con fallback esplicito, eliminando il blocco MySQL greeting packet su porta 5432.
  • 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.