KamoCRM

Вложения в чат, голосовые сообщения и записи звонков более чем с помощью Org+clearance

FixDocsService
Порезанный
23 сентября 2026 г. в 02:08 UTC
Автор
Kamo
Обещать
01ee8eb

MediaService / вложения в чат магазина телефонии (CHAT ATTACHMENT) и записи голосовой почты / звонков (VM RECORDING, CALL RECORDING, ACCESS LEVEL) Каждый общий путь визуализации (/download, /stream, /bulk-download, /list, /delete) авторизуется на ****************Орг+проверка чистоты самостоятельно, поэтому любой член организации VIEW DOCUMENTS может читать, экспортировать или перечислять вложения в чат любого коллеги, голосовую почту или звонок. Запись — вне разговора, которым она делилась, в прошлом отозванное вложение (MediaObjImg.isAccessRevoked), и независимо от того, чья это запись. /удалить дополнительно Никогда не читайте ImageAssocType.isAllowDelete: все категории, включая PATIENT CHART CATALOG SOURCE (оба держат AllowDelete=false специально потому, что удаление их уничтожает) доказательства, от которых зависит учет раскрытия информации или происхождение опубликованного тарифного листа, могут быть Мягко удаляется через эту конечную точку независимо от ее собственного правила. New MediaAssocAccess (kamo-shared-library's findByImg Id, продвигаемый отдельно в качестве предварительного условия) Добавляет более узкое правило, что эти три типа ассоциаций всегда отсутствовали: требует членства в МедиаСессии, названной assocObjectId (и почестей AccessRevoked); a VM RECORDING/CALL RECORDING требует права собственности (созданного Участником) или MANAGE VOIP SETTINGS - Справа страница администратора настроек телефона уже закрывает свой просмотр голосовой почты с перекрестным расширением. Проводимый в каждый путь чтения/экспорта/списка/удаления; /список также выпадает из трех типов нефильтрованный запрос «просмотреть все» в DocumentListQuery (звонок, который явно запрашивает один) AssocType по-прежнему получает его, отфильтрованный в один ряд. /удалить теперь также решает эффективные IsAllowDelete (ImageAssocType default, ImgOrgAssoc org-wide override) перед прикосновением к строке непосредственно через imgRepository, а не getDocumentMetadata — удаление было преднамеренно никогда при условии соблюдения потолка зазора, который читается, и это сохраняет это. Новые тесты: MediaAssocAccessTest (11 случаев, собственная логика охранника) ImagingControllerMediaAssocTest (9 случаев, доказывающих, что каждый сайт вызова контроллера фактически вызывает его). Проверка на мутацию: принуждение MediaAssocAccess #denialReason всегда возвращать нуль 5 оборотов Случаи MediaAssocAccessTest красные; возврат проводки контроллера / DocumentListQuery в исходное / основное ломает конструкцию прямо (требуется аргумент нового конструктора), что является провалом строительства, а не утверждения. Пять ранее существовавших тестов ImagingController обновлены для прохождения новый Докстор (реальный экземпляр, где конечная точка тестируемого теперь достигает его; нуль, где он находится); Вероятно, нет. Полный комплект: 725 тестов зеленый (было 705; +20 новых).

Все изменения

Как вы видите судоходство?

Все это приходит в ваше рабочее пространство самостоятельно. Начните с бесплатного плана и прочитайте эту страницу через месяц.

Начните бесплатно навсегдаПосмотреть цены