在Salesforce中,我们有一个场景,在潜在客户对象的触发器上,我们正在更新Campaign的一些记录。但是,代表我们运行触发器的用户对广告系列没有编辑权限。我们在活动更新中没有遇到任何问题,因为触发器正在系统模式下运行操作。 此外,我们已经申请了安全审查并进行了更改,并添加了对象isUpdatable((的检查,之后,我们无法更新活动,因为该检查返回isUpdatable((的假。
我的问题是,我们可以在不应用 isUpdatable(( 检查的情况下通过安全审查吗? 如果我们的流程具有代表没有市场活动/商机权限的用户更新市场活动/商机的业务逻辑?
如果我们无法通过该检查通过安全审查,那么还有什么替代方案,其中一个没有活动/商机权限的用户对潜在顾客/联系人执行一些操作,而我们想在该操作后在系统模式下更新市场活动/商机?
还是有必要向该用户提供活动/商机的权限?
这不是一个编码问题,所以它可能在这里关闭。考虑交叉发布到 https://salesforce.stackexchange.com/
一般来说,你的应用程序应该简化Salesforce。通过为该客户预先构建、预先测试的用例并为最终用户节省点击次数来增加价值。(让我们忽略从其他系统提取数据等情况,运行一些SF无法轻松完成的疯狂Excel文件生成(。有了这种理念 - 在安全性方面,您应该尊重系统管理员的意愿。如果管理员未授予配置文件 X 对字段 Y 的编辑访问权限 - 安全审查答案是您应该检测到它。如果你能优雅地恢复并继续你的程序 - 酷。如果是关键字段 - 抛出错误,请强制管理员做出有意识的决定。因为如果您正在保存点击 - 用户将在普通 UI 中面临同样的问题。例如,它不仅是"描述",也是关于"不共享"。
它还有另一层 - 许可。在过去,"营销用户"(访问活动(是一个单独的许可证,您可以通过单击用户复选框来分配它,但必须购买。现在它更简单了,是完整用户许可证的一部分(我认为(。但是,在某些情况下,您仍然无法访问机会,例如(平台许可证(或只能访问帐户、联系人和 10 个自定义对象(Chatter Plus 许可证或任何新名称(。
如果您滥用系统模式从对象中获取数据,则不允许用户查看(或保存到对象( - 官方答案是SF因您而赔钱。确实应该分配权限,如果需要,还可以购买许可证。我不是律师,我不知道谁违反了与 Salesforce 的主服务协议,您或安装该应用程序的客户或两者兼而有之。我会说阅读合同,看看你能做些什么来保护自己。如果这意味着您的应用程序不能由客户在Essentials/Professional上安装(或者它可以安装在任何地方,但只能由正式用户使用,而不是由Platform/Chatter/Community使用( - 那么,它就是这样。决定利弊,如果被抓住了,法律后果...
他们是人类,和他们交谈。也许你会通过审查。最好有一个坚如磐石的商业案例,为什么你需要绕过检查。
附言你知道你不必再做描述了吗?Spring'20将于本周和下周上线,"强制执行安全性"和"stripinaccessfields"将正式发布:)
P.P.S你真的需要触发器吗?工作流、流程构建器、流程(yuck( - 任何没有代码的东西 = 不需要 isAccess,如果它有效地死于权限 - 这是客户端系统管理员的问题?