我有一个自定义的对象与主要细节机会。有没有方法可以确定用户在查询此自定义对象时是否具有读取或读取/写入权限?查询对象父级的用户权限级别?
为了澄清我的需要,我在寻找一种方式有明显的区别记录之间,他们只能进行读操作,以及他们可以编辑记录,以使我的网页(非visualforce)。
我有一个自定义的对象与主要细节机会。有没有方法可以确定用户在查询此自定义对象时是否具有读取或读取/写入权限?查询对象父级的用户权限级别?
为了澄清我的需要,我在寻找一种方式有明显的区别记录之间,他们只能进行读操作,以及他们可以编辑记录,以使我的网页(非visualforce)。
用户必须是相同的访问,因为他们有机会。 Profile
对象公开权限,但它似乎不允许您查找有关对象的CRUD设置。
你创建一个集成部分或Visualforce工作?如果您使用的是Visualforce,界面将自动遵守安全控制,隐藏他们不允许看到的数据,并且只有在使用<apex:inputField>
(如果他们没有写入该字段的权限)时才允许字段为只读。
**编辑** 也许有人会有更好的解决方案,但试图更新您查询的记录,存储每个记录是成功还是失败,然后使用它来控制界面?黑客的位,如果我找到其他东西,我一定会更新。
**编辑** 25/01/2012有 只碰到过这样的:http://www.salesforce.com/us/developer/docs/api/index_Left.htm#StartTopic=Content/sforce_api_objects_userrecordaccess.htm?SearchType=Stem
相当肯定会给你你需要的东西!
我不知道的方式来查询,找出访问级别但是如果你的顶点类使用共享中的关键字,将尊重共享的对象因此,当您尝试更新,你会得到的数据你可以捕捉到一个DML异常。
如果你不使用的分享,然后先端不尊重共享模式和技术,用户将能够更新数据,即使他们没有权限。
正如LaceySnr指出的那样,如果您使用的是visualforce,<apex:inputfield>
元素只会在只读访问时自动向用户显示只读。
我希望能够在页面之间显示用户可能编辑和不可编辑的记录之间的视觉差异,因此,从控制器处理失败并不是一个解决方案。我编辑了我的原始文章以澄清一点。 – CDelaney 2012-01-17 19:53:37
这可能包含回答你的问题http://salesforceblogger.blogspot.com/2012/04/query-user-access-level-in-apex.html
存在被曝光与API 24.0的UserRecordAccess表,其中U可以很容易地检查访问,而不是与分享对象乌尔撞头。
集成,所以理想情况下我希望在查询记录的同时获得此信息。我知道有一个OpportunityShare对象有一些权限信息,但我不确定它是否是正确的东西,或者如果在查询我的自定义对象时甚至可以查看。 – CDelaney 2012-01-17 17:11:11
刚刚更新我的答案,包括一些新的发现信息:) – 2012-01-24 23:38:12
我希望避免任何额外的查询,但至少我可以得到所有行的权限,只是一个额外的镜头与此有关。谢谢 – CDelaney 2012-01-27 19:40:48