Можно ли ограничить доступ к изображениям профиля Chatter таким образом, чтобы только системные администраторы могли загружать фотографии, а все остальные были ограничены?
Ограничения на изображения профиля Salesforce Chatter
Ответы (1)
Обычно безопасность поля в объекте нам бы помогла, но для User
этого не существует. По сути, каждому пользователю предоставляется контроль над его или ее собственным профилем, включая изображение, и для объекта пользователя нет разрешений на поля. Вы не можете изменять других пользователей, но можете изменять своих.
Я изо всех сил пытаюсь понять, почему вы хотите это сделать, поскольку возложение бремени загрузки фотографии на администратора кажется занятой работой, которая отнимет у него что-то более продуктивное. Но давайте с этим.
Немного предыстории: URL-адрес фотографии содержится в двух полях объекта User
: FullPhotoURL
и SmallPhotoURL
.
Когда запись User
создается впервые, ей назначается фотография профиля с синим смайликом по умолчанию, которая выглядит следующим образом:
URL-адрес фотографий по умолчанию всегда следующий:
FullPhotoURL
:https://c.eu5.content.force.com/profilephoto/005/F
SmallPhotoURL
:https://c.eu5.content.force.com/profilephoto/005/T
Если я обновлю фотографию по умолчанию до новой, значение FullPhotoURL
будет выглядеть так: https://c.eu5.content.force.com/profilephoto/72924000000CisD/F
И каждый раз, когда он обновляется, значение идентификатора записи выше 72924000000CisD
будет обновляться до нового.
Обычная резервная позиция в этом случае будет заключаться в том, чтобы триггер искал изменение значения поля, а затем останавливал транзакцию, тем самым не позволяя пользователю обновлять свою фотографию.
Однако в моем тестировании процесс загрузки фотографии профиля не вызывает срабатывания триггера.
Итак, следующий вариант, который у вас есть, — это пакетный процесс, который выполняется по расписанию. К сожалению, это оставляет вам необходимость где-то отслеживать старые значения фотографий каждого пользователя. Таким образом, шаги высокого уровня для этого обходного пути выглядят следующим образом:
- Добавьте пользовательское поле для хранения текущего URL-адреса фотографии профиля.
- Используйте одноразовый пакетный процесс Apex или какой-либо инструмент данных, например загрузчик данных, чтобы заполнить его для существующих пользователей, создайте правило рабочего процесса с обновлением поля, чтобы заполнить его для новых пользовательских записей.
- Периодически запускайте запланированное задание apex для поиска пользователей с измененными значениями в полях фотографий профиля.
- Когда вы найдете этих пользователей, либо отметьте их, либо вернитесь к предыдущему значению.
Некрасиво, но это обеспечит необходимый контроль.
Оттуда вам нужно информировать пользователей о том, что они должны ожидать, что это произойдет.
/profilephoto/005/F
и /profilephoto/005/T
? Я пытался подтвердить, что это определенно так, но хочу иметь возможность подтвердить это, прежде чем полагаться на него.
- person Robert Henderson; 23.06.2015