- 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).
