如何在Silverstripe中为页面类型设置默认安全访问权限?

时间:2014-03-06 23:10:36

标签: php silverstripe

我有一个自定义页面类型,需要使用以下默认安全设置创建(因为它们会出现在CMS中:

谁可以查看此页面?
只有这些人(从列表中选择)
管理员,内容作者

在Datamodel中,这将涉及SiteTree中的 CanViewType = OnlyTheseUsers - 以及SiteTree_ViewerGroups中的两行,其中SiteTreeID = ID,GroupID = 1&分别为2。

有没有办法通过框架执行此操作,还是应该使用OnBeforeWrite直接操作数据库?

1 个答案:

答案 0 :(得分:4)

您可以使用CanViewType功能设置默认ViewerGroupspopulateDefaults()

public function populateDefaults() {
    $this->CanViewType = 'OnlyTheseUsers';
    $this->ViewerGroups()->add(Group::get()->byID(1));
    $this->ViewerGroups()->add(Group::get()->byID(2));

    parent::populateDefaults();
}

这将添加2个用户组并将can视图类型设置为'OnlyTheseUsers'。

另一种解决方案是将canView功能设置为仅允许组1或组2中的成员查看页面:

public function canView($member = NULL) {
    $currentUser = Member::currentUser();
    if ($currentUser && ($currentUser->inGroup(1) || $currentUser->inGroup(2))) {
        return true;
    }
    return false;
}