KamoCRM

Gate Chat-Anhänge, Voicemails und Anrufaufzeichnungen von mehr als org+clearance

FixDocsService
Verschifft
23. September 2026 um 02:08 UTC
Autor
Kamo
Ausschuss
01ee8eb

MediaService/Telefonie-Chat-Anhänge (CHAT_ATTACHMENT) und Voicemail/Call-Aufnahmen (VM_RECORDING, CALL_RECORDING) unter ACCESS_LEVEL 0. Jeder generische Bildgebungspfad (/download, /stream, /bulk-download, /list, /delete) autorisiert auf ************ org+clearance check allein, so dass irgendein Org-Mitglied hält VIEW_DOCUMENTS könnten Chatanhang, Voicemail oder Anruf eines Kollegen lesen, exportieren oder auflisten Aufnahme - außerhalb des Gesprächs wurde es geteilt, vorbei an einem widerrufenen Anhang (MediaObjImg.isAccessRevoked), und unabhängig davon, wessen Aufnahme es war. /löschen zusätzlich niemals ImageAssocType.isAllowDeletDelete überhaupt gelesen: jede Kategorie, einschließlich PATIENT_CHART und CATALOG_SOURCE (beide Hold isAllowDelete=false speziell weil das Löschen sie zerstört Beweise eine Offenlegungsbuchhaltung oder eine veröffentlichte Rate Blatt die Herkunft abhängt), könnte sein weich-deleted durch diesen einen Endpunkt unabhängig von seiner eigenen Regel. New MediaAssocAccess (Kamo-shared-library findByImg_Id, separat als Voraussetzung geschoben) ergänzt die engere Regel, die diese drei Vereinstypen immer gefehlt haben: ein CHAT_ATTACHMENT erfordert die Mitgliedschaft in der MediaSession, die von assocObjectId benannt wird (und Ehrungen istAccessRevoked); a VM_RECORDING/CALL_RECORDING erfordert das Eigentum (createdByMember) oder MANAGE_VOIP_SETTINGS rechts die Phone-Einstellungen Admin-Seite bereits Gates seine Quer-Erweiterung Voicemail-Ansicht hinter. In jeden Lese-/Export/List/Lösch-Pfad verdrahtet; /list lässt auch die drei Typen von einem ungefilterte "Browse everything"-Abfrage in DocumentListQuery (ein Anrufer, der explizit danach fragt von assocType bekommt es noch, gefiltert pro Reihe). /löscht jetzt auch die effektive istAllowDelete (ImageAssocType default, ImgOrgAssoc org-wide override) vor dem Berühren einer Zeile, lesen direkt über imgRepository statt getDocumentMetadata - Löschen war absichtlich nie vorbehaltlich der Clearance-Obergrenze, die lesen, auferlegt, und dies bewahrt, dass. Neue Tests: MediaAssocAccessTest (11 Fälle, die eigene Logik des Wächters) und ImagingControllerMediaAssocTest (9 Fälle, die belegen, dass jede Controller-Call-Website tatsächlich aufrufet). Mutation-checked: zwingt MediaAssocAccess#denialReason immer Null dreht 5 von MediaAssocAccessTest-Fälle rot; Revertierung der Controller/DocumentListQuery Verdrahtung auf Herkunft/Haupt bricht den Build regelrecht (das neue Konstruktorar-Argument ist erforderlich), was ein Versagen ist durch Konstruktion und nicht durch Behauptung. Fünf bereits existierende ImagingController-Tests aktualisiert, um zu bestehen der neue Docstor (echte Instanz, wo der Endpunkt unter Test ihn jetzt erreicht; null, wo er Bewiesen ist nicht). Komplette Suite: 725 Tests grün (war 705; +20 neu).

Alle Änderungen

Wie, was Sie sehen Versand?

Alles kommt in Ihrem Arbeitsbereich für sich. Starten Sie mit dem kostenlosen Plan und lesen Sie diese Seite in einem Monat wieder.

Free Forever startenPreisgestaltung anzeigen