我有一个自定义页面类型,需要使用以下默认安全设置创建(因为它们会出现在CMS中:
谁可以查看此页面?
只有这些人(从列表中选择)
管理员,内容作者
在Datamodel中,这将涉及SiteTree中的 CanViewType = OnlyTheseUsers - 以及SiteTree_ViewerGroups中的两行,其中SiteTreeID = ID,GroupID = 1&分别为2。
有没有办法通过框架执行此操作,还是应该使用OnBeforeWrite直接操作数据库?
答案 0 :(得分:4)
您可以使用CanViewType
功能设置默认ViewerGroups
和populateDefaults()
:
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;
}