1

我有一个自定义对象,其中包含机会的主详细信息。有没有办法在查询这个自定义对象时确定用户是否具有读或读/写访问权限?

为了澄清我的需求,我正在寻找一种方法来呈现我的页面(非visualforce),明确区分他们只能读取访问权限的记录和他们可以编辑的记录。

4

3 回答 3

1

用户将拥有与机会相同的访问权限。该Profile对象公开权限,但它似乎不允许您了解对象的 CRUD 设置。

您是在创建集成块还是使用 Visualforce?如果您使用 Visualforce,界面将自动遵守安全控制,隐藏他们不允许查看的数据,并在使用时将字段设置为只读(<apex:inputField>如果他们无权写入字段)。

**编辑**也许有人会有更好的解决方案,但是尝试更新您查询的记录,存储每个记录是成功还是失败,然后使用它来控制界面如何?有点hack,如果我发现其他任何东西,我一定会更新。

** 编辑 25/01/2012 ** 刚刚遇到这个:http ://www.salesforce.com/us/developer/docs/api/index_Left.htm#StartTopic=Content/sforce_api_objects_userrecordaccess.htm?SearchType=Stem

很确定这会给你你所需要的!

于 2012-01-16T23:13:31.703 回答
1

这可能包含您的问题的答案http://salesforceblogger.blogspot.com/2012/04/query-user-access-level-in-apex.html

有一个使用 API 24.0 公开的 UserRecordAccess 表,您可以使用它轻松检查访问,而不是用共享对象敲打您的头。

于 2012-04-06T18:44:17.650 回答
0

我不知道一种查询访问级别的方法,但是如果您的 apex 类使用 With Sharing 关键字,它将尊重对象上的共享,因此当您尝试更新数据时,您将得到一个 DML 异常你可以抓住。

如果您不使用 With Sharing,则 apex 不尊重共享模型,从技术上讲,即使用户无权访问,他们也可以更新数据。

正如 LaceySnr 所指出的,如果您使用的是 visualforce,<apex:inputfield>如果用户只有只读访问权限,该元素将自动向用户显示只读。

于 2012-01-17T16:59:32.463 回答