【问题标题】:DataExtension and canView [closed]DataExtension 和 canView [关闭]
【发布时间】:2013-05-26 11:36:04
【问题描述】:

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

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

canView, canEdit, canDelete, canCreate etc  

通过数据扩展?

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

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

public function canEdit($member) {
}

【问题讨论】:

  • 哪个 SilverStripe 版本?
  • 对不起,SilverStripe 3.0.x

标签: silverstripe


【解决方案1】:

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

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

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

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

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

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

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

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

【讨论】:

  • 好的,谢谢!所以我的结论是:不可能。我看到了多个扩展的复杂性。子类化也不是很舒服,因为您不能轻松地将其添加到现有的 DO。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-06
  • 2011-10-04
相关资源
最近更新 更多