DataExtension和canView

时间:2013-05-26 11:36:04

标签: silverstripe

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

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

canView, canEdit, canDelete, canCreate etc  

通过DataExtension?

我试过但是还不能成功,我想知道我是否遗漏了什么?

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

public function canEdit($member) {
}

1 个答案:

答案 0 :(得分:3)

假设SS3.0 +简短答案,则取决于。

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

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

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

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

  

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

     
      
  • false:禁止此权限,无论其他扩展名是什么
  •   
  • true:允许此权限,只要没有其他扩展名返回false
  •   
  • NULL:不影响结果
  •   

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