Libri di indirizzo Scope al membro che li possiede

FixEmailService
Spegnimento
10 agosto 2026 alle ore 14:13 UTC
Autore
Kamo
Impegno
41c76a7

I contatti sono stati oggetto di una sola organizzazione. listBooks(orgId) was findByOrganizationId(orgId), e la query della lista di contatto aperta DOVE c.contactBook.organization.id = :orgId senza alcun predicato proprietario, quindi ogni membro ha visto — e potrebbe ingombrare, spostare ed esportare — ogni contatto qualsiasi collega avesse mai aggiunto. CardDAV è stato proprietario-scoped tutto il tempo (listBooksByUserId -> findByOwnerId), quindi il telefono di un membro e il web console non era d'accordo su quello che possedeva quell'account. Scope è ora organizzazione e proprietario su ogni lettura. Proprietario da solo porterebbe libri di un membro in ogni organizzazione a cui appartengono; organizzazione da solo è il bug che viene sostituito. - ContactQueryStore.whereClause() è un frammento JPQL statico e testabile, quindi il proprietario predicato vive esattamente in un posto piuttosto che essere re-derived per call site. - findInOrg -> findInScope(ids, orgId, ownerId): la guardia dietro ogni massa eliminare, spostare, esportazione e gruppo-membro cambiamento. - La lista di gruppo si sposta nel negozio di query, il proprietario-scoped; l'org-wide il lettore su ContactService non ha avuto chiamate rimanenti e viene rimosso piuttosto di sinistra come punto d'ingresso non incorniciato. - Le guardie diventano libroBelongsToMember / groupBelongsToMember / contattoBelongsToMember. Il libro senza proprietario dell'organizzazione-default appartiene a nessuno e 404 per tutti. - assicurarsiPersonalBook() disposizioni "I miei contatti" in prima lettura, quindi un membro senza libro non è lasciato con un raccoglitore vuoto e una creazione che non può successo. listBooks quindi non è più lettoOnly. Anche correzioni # Che ha passato un id utente # in listBooks(orgId) e così abbinato contro ORGANIZATION ID — esso non ha restituito nulla. Ora utilizza la lista del proprietario-scopio che ha sempre significato. I dati già seduti in libri condivisi sono migrati ContattoBookOwnerSplitMigration in KamoInitializerService.

Tutte le modifiche

Come quello che vedi la spedizione?

Ognuno di questi aggiornamenti atterra automaticamente nello spazio di lavoro. Inizia gratis e guardalo crescere settimana dopo settimana.

Inizia gratis per sempreVisualizza il prezzo