- Verschifft
- 17. September 2026 um 04:31 UTC
- Autor
- Kamo
- Ausschuss
- d35858f
Die Zugangsdaten einer KontaktintegrationJson wurde durch das ersetzt, was ein Save gesendet hat. Der org CalDAV/CardDAV sendet alles vier Server-Felder (leer - sie zeigen nie, was gespeichert ist) auf jedem Speichern eines Apple oder benutzerdefinierten Server, so Drücken Speichern, um einen Sync-Schalter zu ändern, hat die gespeicherte Adresse, den Benutzernamen und das Passwort mit leeren Strings überschrieben. Die Der Quelldialog der Kontaktseite sendet nur die eingegebenen Felder, so dass das Ändern eines Passworts die Adresse und den Benutzernamen fallen ließ. IntegrationSettingsService unterscheidet nun die beiden Arten von Anmeldeinformationen schreiben: - Eine Einstellung mit Speicherplatz (org PUT, Mitglied POST/PUT) MERGES: ein leeres oder Nullfeld ist "nicht mitgeliefert" und speichert - alle Felder ohne Änderungen; ein getipptes Feld ersetzt sein gespeichertes Gegenstück und jedes andere gespeicherte Feld bleibt. Eine Speichern, der den Anbieter wechselt, beginnt bei Null, so dass die Token eines OAuth-Stipendiums nie getragen werden in die Zugangsdaten einer Apple-ID oder umgekehrt. Ein gespeichertes Passwort ist an den caldavUrl, carddavUrl und Benutzername, mit dem es gespeichert wurde: Ändern einer von ihnen ohne Eingabe des Passwortes wird mit einem 400 statt Das alte Passwort an einen anderen Server oder ein anderes Konto senden. Ein Zugangsdaten, der kein JSON-Objekt ist, wird gespeichert, gesendet, wie zuvor. - Eine OAuth-Zustimmung REPLACES das gesamte Zuschuss (neue saveOrgOAuthGrant für den Org Callback; saveMemberOAuth). Eine Fusion es würde eine refresh Token der Anbieter nicht neu aufgeben zu halten, oder ein anderes Konto E-Mail. Der Controller antwortet IllegalArgumentException von diesen spart mit 400 statt 500. Die Token-Refresher (hier und in daemonservice) lesen und umschreiben die gesamte entschlüsselte Karte auf der Entität, und ProviderRegistry / GenericDavProvider liest es nur; keiner von ihnen ändert sich. Es gibt keine contact_integrations Zeilen in der Produktion, also Noch ist nichts abgewischt. IntegrationSettingsServiceTest: leere Felder halten den Server, ein getipptes Feld ersetzt nur sich selbst, ein neues Adresse/Konto ohne Passwort wird abgelehnt und ändert nichts (die gleiche Adresse resent ist keine Änderung), ein Anbieter-Wechsel lässt die Schlüssel des anderen Anbieters, org und Mitglied OAuth Grants ersetzen. Mutation-geprüft: Ersetzen anstatt zu verschmelzen, die Passwortbindung zu entfernen, den Provider-Wechsel zu ignorieren und entweder OAuth-Zuschüsse zu fusionieren Jeder fällt durch einen Test. Volle Suite: 1763 Tests, 0 Ausfälle.