- Spegnimento
- 7 agosto 2026 alle ore 05:08 UTC
- Autore
- Kamo
- Impegno
- e6cb8fd
creareCustomer ha salvato il conto prima di scrivere i suoi indirizzi, e non era transazionale — così quando l'inserto dell'indirizzo non è riuscito, il conto semi-costruito rimase impegnato e ogni riprovazione lasciò un altro orfano alle spalle. È ora @Transactional, e perché il gestore cattura le proprie eccezioni per modellare un risposta (che sopprime il rollback automatico di primavera) segna il transazione solo esplicitamente rollback. Anche sulla superficie del cliente: - primarioMemberId è stato esaminato con un nudo trovareById, quindi un chiamante potrebbe consegnare un membro di ANOTHER org proprietà di, e diritti di fatturazione su, un conto in Questo. È ora org-scoped, aggiornamento corrispondenteCustomerMembers che già ha fatto questo. - getAddresses and BuildAccountSummary costruito risposte con Map.of, che getta su un valore nullo. Un account senza indirizzo primario è il normale caso, quindi GET /customers/{uid}/addresses era un garantito 500. - Un codice valutario non riconosciuto persistette NULL invece del valore predefinito. - L'autorevolezza della nota è venuta dal corpo della richiesta, quindi è stato forgeable; ora viene dalla sessione. - L'intera superficie /customers non richiedeva altro che una sessione valida. Qualsiasi membro potrebbe creare, modificare ed eliminare gli account di org e riscrivere Sconti AccountTier, compresi i ruoli non assegnati VIEW ACCOUNTS. The E' il momento giusto. i diritti sono esistiti da sempre e sono ora applicato, specchiando il controllo MERGE ACCOUNTS già in questo file. POST/DELETE /leads/{id}/account non ha avuto un controllo corretto: un chiamante che tiene solo VIEW LEADS potrebbe ricollegare o scollegare l'account su una pista che non possono aprire, e ha ripreso un LeadDTO smascherato. Ora portano le stesse porte come updateLead e mascherare la risposta attraverso LeadFieldMask. Un account mancante non sarebbe più NPE in un 400 che trasporta il testo interno.