0

我喜欢从论坛中提出这个问题:
http ://www.silverstripe.org/data-model-questions/show/23484

简而言之:
是否可以应用权限方法:

canView, canEdit, canDelete, canCreate etc  

通过数据扩展?

我尝试过但还没有成功,我想知道我是否遗漏了什么?

子类化可能会,但由于 DataExtension 中有空的权限方法,它们的目的是什么?

public function canEdit($member) {
}
4

1 回答 1

3

假设 SS3.0+ 的简短答案是,这取决于。

直接DataObject->can[Create|Edit|View|Delete]方法不能以这种方式扩展,但SiteTree大部分的后代可以。

这里感兴趣的函数DataObject->extendedCan是由所有SiteTreecan* 方法调用的,但不是 DataObject can* 方法。

当然,您始终可以确保在您的DataObject子类中调用此方法。

请注意,如果多个扩展正在扩展这些功能,这可能会变得非常复杂。以下是该DataObject课程的一些重要文档:

处理来自更改权限的扩展的三态响应。扩展预计将返回以下三个值之一:

  • false:禁止此权限,不管其他扩展怎么说
  • true:允许这个权限,只要没有其他扩展返回 false
  • NULL:不影响结果

还值得注意的是,任何具有 ADMIN 权限的用户都将通过所有这些检查。为 ADMIN 用户更改对象权限的唯一方法是子类化DataObject

于 2013-05-27T07:59:19.763 回答