У меня есть настраиваемый тип страницы, который нужно создать со следующими настройками безопасности по умолчанию (как они появятся в CMS:
Кто может просматривать эту страницу?
Только эти люди (выбирайте из списка)
Администраторы, авторы контента
В Datamodel это будет включать CanViewType = OnlyTheseUsers в SiteTree – и две строки в SiteTree_ViewerGroups, где SiteTreeID = ID и GroupID = 1 и 2 соответственно.
Есть ли способ сделать это через фреймворк или я должен напрямую манипулировать базой данных с помощью OnBeforeWrite?
Вы можете установить CanViewType
и ViewerGroups
по умолчанию, используя 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 группы пользователей и задает тип вида просмотра «OnlyTheseUsers».
Альтернативное решение состоит в том, чтобы установить функцию canView
чтобы разрешить только членам группы 1 или 2 просматривать страницу:
public function canView($member = NULL) { $currentUser = Member::currentUser(); if ($currentUser && ($currentUser->inGroup(1) || $currentUser->inGroup(2))) { return true; } return false; }