Intereting Posts
Создание интерфейса в PHP, который может указать тип, чтобы определить, какой класс использовать RegExp в функции preg_match возвращает ошибку браузера Вставка выбора переключателей в MySQL php / curl: удалить cookie, созданный с помощью CURLOPT_COOKIEJAR Ошибка активации расширения php с помощью PHP Farm Как заставить переменные работать в Single Quotes правильно? Является ли функция count count () O (1) или O (n) для массивов PHP? Управление JOINs по неизвестному числу атрибутов EAV Где изображение пользователя хранится в Drupal 7? preg_replace все нецифровые символы, кроме + в начале строки Как зашифровать открытый текст с AES-256 CBC в PHP с помощью openssl ()? Отображение количества посетителей Google Analytics на веб-сайте Вызовите веб-службу asp.net с PHP с несколькими параметрами Kohana 2.3.4 Запрос сводной таблицы ORM Symfony2: прерывистое высокое время отклика / медленное завершение SessionHandlerProxy :: read ()

Как установить доступ по умолчанию для доступа к типу страницы в Silverstripe?

У меня есть настраиваемый тип страницы, который нужно создать со следующими настройками безопасности по умолчанию (как они появятся в 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; }