是否可以限制对 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
并且每次更新时,上面的记录 id 值72924000000CisD
都会更新为新的。
在这种情况下,正常的后备位置是让触发器查找对字段值的修改,然后停止事务,从而阻止用户更新他们的照片。
但是,个人资料照片上传过程似乎不会导致在我的测试中触发触发器。
因此,您的下一个选项是有一个按计划运行的批处理。不幸的是,这使您不得不在某处跟踪每个用户照片的旧值。因此,此解决方法的高级步骤似乎是:
- 向用户添加自定义字段以存储当前的个人资料照片 url
- 使用一次性批处理 Apex 流程或某种数据工具(如数据加载器)为现有用户填充此内容,创建一个带有字段更新的工作流规则以填充新用户记录。
- 定期运行计划的 apex 作业以在其个人资料照片字段中查找具有修改值的用户
- 当您找到这些用户时,要么标记它,要么恢复到以前的值。
不漂亮,但它会放置你想要的控制。
从那里开始,您需要教育用户他们需要期望这种情况发生。