feat: introduce Resend email provider and add admin email configuration page.

This commit is contained in:
2025-12-12 12:43:29 +01:00
parent ad5a880219
commit 54cf1ff276
16 changed files with 5119 additions and 56 deletions

View File

@@ -0,0 +1,29 @@
# Implementazione Configurazione Email in Amministrazione
## Obiettivo
Rendere disponibile la configurazione dell'invio email del modulo Comunicazioni nella sezione Amministrazione dell'interfaccia grafica.
## Stato Attuale
- Il backend ha già gli endpoint per la configurazione SMTP (`api/communications/config`).
- Esiste già una pagina `SettingsPage` nel modulo Comunicazioni (`src/frontend/src/apps/communications/pages/SettingsPage.tsx`) che gestisce il form di configurazione.
- Il modulo Comunicazioni non è attualmente visibile nel menu principale se non attivo/acquistato, ma la configurazione email è un setting globale che dovrebbe essere accessibile.
## Piano di Lavoro
1. **Aggiornamento Route**: Aggiungere una route `/admin/email-config` in `App.tsx` che punta alla pagina di configurazione esistente (o un wrapper).
2. **Aggiornamento Menu**: Aggiungere la voce "Configurazione Email" nel menu "Amministrazione" in `Sidebar.tsx`.
3. **Traduzioni**: Aggiungere le chiavi di traduzione per la nuova voce di menu in `it/translation.json` e `en/translation.json`.
4. **Test**: Avviare l'applicazione e verificare che la pagina sia accessibile e funzionante.
## Dettagli Tecnici
- Riutilizzare `src/frontend/src/apps/communications/pages/SettingsPage.tsx`.
- La route sarà protetta se necessario, ma accessibile come parte dell'amministrazione.
## Stato Finale
- [x] Aggiunta route `/admin/email-config` in `App.tsx`.
- [x] Aggiunta voce menu "Configurazione Email" in `Sidebar.tsx`.
- [x] Aggiunte traduzioni IT ed EN.
- [x] Installato .NET 9.0 SDK via script locale (`~/.dotnet`).
- [x] Installato `dotnet-ef` tool.
- [x] Creata migrazione `UpdateCommunicationsModule` e aggiornato il database.
- [x] Backend avviato su porta 5000.
- [x] Frontend avviato su porta 5173.

View File

@@ -0,0 +1,37 @@
# Integrazione Supporto Resend per Invio Email
## Obiettivo
Abilitare l'invio di email tramite servizi terzi (Resend) oltre al già presente SMTP, con configurazione via interfaccia grafica.
## Stato Attuale
- Backend: `SmtpEmailSender` gestisce solo SMTP.
- Frontend: `SettingsPage` gestisce solo campi SMTP.
- DTO: `SmtpConfigDto` limitato a SMTP.
## Piano di Lavoro
1. **Backend DTO**: Aggiornare `SmtpConfigDto` con campi `Provider` e `ResendApiKey`.
2. **Backend Controller**: Aggiornare `CommunicationsController` per leggere/salvare le nuove configurazioni (`EMAIL_PROVIDER`, `RESEND_API_KEY`).
3. **Backend Service**: Modificare `SmtpEmailSender` (o rinominarlo in `UnifiedEmailSender`) per supportare la logica condizionale (SMTP vs Resend). Implementare l'invio tramite HTTP Client per Resend.
4. **Frontend Service**: Aggiornare le definizioni di tipo TypeScript.
5. **Frontend UI**: Modificare `SettingsPage` per aggiungere un selettore di provider (SMTP/Resend) e mostrare i campi pertinenti dinamicamente.
6. **Traduzioni**: Aggiungere le nuove etichette.
## Dettagli Tecnici
- **API Resend**: Richiesta POST a `https://api.resend.com/emails` con Bearer Token.
- **Provider Enum**: "smtp", "resend".
- **Defaut**: SMTP per retrocompatibilità.
## Avanzamento
- [x] Backend DTO Update (`SmtpConfigDto`)
- [x] Backend Controller Update (`CommunicationsController`)
- [x] Backend Service Logic (`SmtpEmailSender` now handles Resend via HTTP)
- [x] Frontend Types Update
- [x] Frontend UI Update (`SettingsPage.tsx` with Provider selector)
- [x] Dependencies (Added `Microsoft.Extensions.Http` to Infrastructure)
## Note Finali
- L'integrazione supporta ora la selezione dinamica tra SMTP e Resend.
- La configurazione viene salvata su database (`EMAIL_PROVIDER`, `RESEND_API_KEY`).
- Il backend utilizza `IHttpClientFactory` per le chiamate API verso Resend.
- UI aggiornata per mostrare campi condizionali.