1

是否可以限制对 Chatter 个人资料图片的访问,以便只有系统管理员可以上传照片,而所有其他人都受到限制?

4

1 回答 1

1

通常,对象中的字段安全性会对我们有所帮助,但这对于User. 从根本上说,每个用户都可以控制他或她自己的个人资料,包括图片,并且用户对象没有字段权限。您不能修改其他用户,但您可以修改自己的用户。

我很难理解您为什么要这样做,因为将上传照片的负担交给管理员似乎是一项忙碌的工作,会让他们无法做一些更有成效的事情。但是,让我们一起去吧。

一些背景故事:照片的 URL 包含在两个User对象字段中:FullPhotoURLSmallPhotoURL.

首次创建User记录时,会为其分配默认的蓝色笑脸头像,如下所示:

通用 Salesforce 蓝色笑脸配置文件头像

默认照片的 url 始终如下:

  • FullPhotoURLhttps://c.eu5.content.force.com/profilephoto/005/F
  • SmallPhotoURLhttps://c.eu5.content.force.com/profilephoto/005/T

如果我从默认照片更新为新照片,则该FullPhotoURL值将如下所示:https://c.eu5.content.force.com/profilephoto/72924000000CisD/F

并且每次更新时,上面的记录 id 值72924000000CisD都会更新为新的。

在这种情况下,正常的后备位置是让触发器查找对字段值的修改,然后停止事务,从而阻止用户更新他们的照片。

但是,个人资料照片上传过程似乎不会导致在我的测试中触发触发器。

因此,您的下一个选项是有一个按计划运行的批处理。不幸的是,这使您不得不在某处跟踪每个用户照片的旧值。因此,此解决方法的高级步骤似乎是:

  • 向用户添加自定义字段以存储当前的个人资料照片 url
  • 使用一次性批处理 Apex 流程或某种数据工具(如数据加载器)为现有用户填充此内容,创建一个带有字段更新的工作流规则以填充新用户记录。
  • 定期运行计划的 apex 作业以在其个人资料照片字段中查找具有修改值的用户
  • 当您找到这些用户时,要么标记它,要么恢复到以前的值。

不漂亮,但它会放置你想要的控制。

从那里开始,您需要教育用户他们需要期望这种情况发生。

于 2015-04-15T09:58:25.933 回答