2016-10-26 5 views
2

Существует по умолчанию PermissionCode, который не предоставляется ContentAuthor. Речь идет о разрешении EDIT_SITECONFIG (включает Содержание Авторы для просмотра и редактирования раздела «Настройки»).Настройка разрешения жесткого диска SilverStripe EDIT_SITECONFIG

Это разрешение может быть предоставлено roles в:
Security > Groups > Content Authors > Permissions>Управление конфигурацией сайта

Site config permission

Как вы можете заставить это разрешение быть предоставлено ContentAuthors по умолчанию?

+0

Как, любые группы, которые вы создаете? Конечно, вы можете добавлять пользователей в несколько групп, поэтому у вас есть все необходимые люди в группе с требуемыми разрешениями. Тогда неважно, что такое дефолт. – Walf

+0

Это тоже сработает. Но я пытаюсь создать более автоматизированное решение для каждой установки SilverStripe, поэтому я предпочитаю жесткое кодирование этого в модуле. – Faloude

ответ

3

Мы можем добавить расширение к классу Group, которое вызывает requireDefaultRecords, чтобы изменить эту переменную.

MySITE/код/​​расширения/CustomGroup.php

class CustomGroup extends DataExtension { 

    public function requireDefaultRecords() { 
     parent::requireDefaultRecords(); 

     $contentAuthorGroup = Group::get()->filter('Code', 'content-authors')->first(); 
     if ($contentAuthorGroup) { 
      Permission::grant($contentAuthorGroup->ID, 'EDIT_SITECONFIG'); 
     } 
    } 
} 

Мы даем возможность нашим Group расширение в нашем config.yml файле.

MySite/_config/config.yml

Group: 
    extensions: 
    - CustomGroup 

Одна вещь, чтобы отметить с этим решением он будет обновлять EDIT_SITECONFIG разрешение настройки каждый раз, когда dev/build называется. Это означает, что если это разрешение отключено через CMS, оно будет переключено обратно в следующий раз, когда вызывается dev/build.

Альтернативой является создание группы авторов контента при первой сборке базы данных. Это установит только EDIT_SITECONFIG, что позволит перезаписать его через CMS.

class CustomGroup extends DataExtension { 

    public function requireDefaultRecords() { 

     // Add default author group if no other group exists 
     $allGroups = Group::get(); 
     if (!$allGroups->count()) { 
      $authorGroup = new Group(); 
      $authorGroup->Code = 'content-authors'; 
      $authorGroup->Title = _t('Group.DefaultGroupTitleContentAuthors', 'Content Authors'); 
      $authorGroup->Sort = 1; 
      $authorGroup->write(); 
      Permission::grant($authorGroup->ID, 'CMS_ACCESS_CMSMain'); 
      Permission::grant($authorGroup->ID, 'CMS_ACCESS_AssetAdmin'); 
      Permission::grant($authorGroup->ID, 'CMS_ACCESS_ReportAdmin'); 
      Permission::grant($authorGroup->ID, 'SITETREE_REORGANISE'); 
      Permission::grant($authorGroup->ID, 'EDIT_SITECONFIG'); 
     } 

     parent::requireDefaultRecords(); 
    } 
} 
+0

Великолепный. Первый метод работает точно так же, как вы описали. Второй метод кажется лучше, но в основном он работает, только включив его в установочные файлы? – Faloude

+1

Правильно. Второй метод будет работать только при первоначальной сборке базы данных во время установки сайта. – 3dgoo

+0

Вы уверены, что первый метод «переключается» между включенными и выключенными? Я просто протестировал его и, кажется, остался «истинным» после каждого dev/build – Faloude

 Смежные вопросы

  • Нет связанных вопросов^_^