MyCasaPro crea ora inviti per fornitori con un ambito di accesso ristretto e ne registra l’invio email in una outbox persistente prima di contattare un servizio SMTP.
In questa pagina
Cosa è cambiato
I fornitori possono esaminare una riparazione condivisa, consultare gli allegati autorizzati e inviare un preventivo senza creare un account.
I token di invito contengono 256 bit casuali; vengono conservati soltanto gli hash SHA-256, i link scadono dopo sette giorni e i proprietari possono revocarli prima.
L’invito e il record nella outbox email vengono salvati nella stessa transazione; un worker gestisce poi consegna, tentativi limitati, blocchi e stato finale.
Un perimetro ristretto per l’ospite
La rotta ospite riguarda una sola richiesta di riparazione, non un account fornitore ridotto. La risposta omette l’identità del proprietario e l’indirizzo stradale; gli allegati restano protetti dall’autorizzazione API limitata al token.
Il token di invito in chiaro non viene salvato. Il database conserva il suo hash SHA-256, la scadenza e lo stato di revoca: la sola lettura del database non rivela quindi un link utilizzabile.
Salvare prima di consegnare
La creazione dell’invito e il messaggio email corrispondente entrano insieme nell’archiviazione persistente. L’invio SMTP avviene successivamente, tramite un worker della outbox, anziché nella transazione della richiesta del proprietario.
Questo confine evita che un guasto temporaneo della posta faccia perdere l’invito o costringa l’utente a chiedersi se sia stato creato. Lo stato di consegna rimane consultabile dopo la risposta alla richiesta.
Tentativi limitati e limiti della messa in produzione
I worker prendono in carico un lotto limitato mediante un blocco di consegna, applicano un timeout per messaggio e registrano l’esito. I tentativi sono limitati, non ripetuti all’infinito; le prese in carico rimaste sospese possono essere recuperate alla scadenza del blocco.
Il pacchetto di produzione riunisce su un server l’app web, l’API Go, PostgreSQL, i caricamenti privati, l’invio SMTP, HTTPS e gli strumenti di backup. La documentazione indica anche ciò che resta irrisolto: monitoraggio esterno, prove di ripristino fuori dal server, archiviazione scalabile orizzontalmente, controlli antiabuso e integrazione operativa di un fornitore di pagamenti.
Nota di ingegneria
La creazione dell’accesso e la consegna della notifica sono transazioni distinte. Salvare la notifica prima di contattare SMTP impedisce che un’interruzione del servizio cancelli un invito altrimenti valido.
Provenienza
Questa nota si basa sul codice verificato del progetto al commit a454540. Documenta una modifica al software, non un aggiornamento personale.