- Verschifft
- 10. August 2026 um 14:13 UTC
- Autor
- Kamo
- Ausschuss
- 41c76a7
Die Kontakte wurden allein durch Organisation ausgekundschaftet. listBooks(orgId) wurde findByOrganizationId(orgId), und die Kontaktlistenabfrage geöffnet WO c.contactBook.organization.id = :orgId ohne Eigentümer Prädikat, so jedes Mitglied sah - und konnte Bulk-Löschen, Umzug und Export - jeden Kontakt Jeder Kol hatte jemals hinzugefügt. CardDAV war die ganze Zeit besitzerüberdacht (listBooksByUserId -- findByOwnerId), so ein Mitgliedstelefon und das Web Konsole uneins darüber, was dieses Konto besaß. Scope ist jetzt Organisation UND Eigentümer auf jeder Lektüre. Besitzer allein würde tragen Bücher eines Mitglieds in jeder Organisation, der sie angehören; Organisation allein wird der Fehler ersetzt. - ContactQueryStore.whereClause() ist ein statisches, beweisbares JPQL-Fragment, also der Eigentümer Prädikat lebt an genau einem Ort, anstatt je aufgerufene Website. - findInOrg -- findInScope(ids, orgId, ownerId): der Wächter hinter jedem Massen löschen, verschieben, exportieren und Gruppen-Mitgliedschaft ändern. - Gruppenanzeigen zieht in den Abfragespeicher, inhaber-kopiert; die org-wide Leser auf ContactService hatte keine verbleibenden Anrufer und wird eher entfernt als unbezahlter Einstiegspunkt verlassen. - Wachen werden bookBelongsTosmitglied / groupBelongsToMember / contactBelongsToMember. Das besitzlose Organisation-Standard-Buch gehört an niemanden und 404s für alle. - sicherstellenPersonalBook() Bestimmungen "Meine Kontakte" auf erster Lektüre, so ein Mitglied mit keinem Buch bleibt kein leerer Picker und eine Schaffung, die nicht listBooks ist daher nicht mehr gelesen. Behebt auch ****************, das eine User-ID passierte in listBooks(orgId) und so abgestimmt es gegen ORGANIZATION_ID nichts zurückgegeben. Es verwendet jetzt die inhaberskopierte Auflistung, die es immer bedeutete. Daten, die bereits in gemeinsamen Büchern sitzen, werden von ContactBookOwnerSplitMigration in KamoInitializerService.