Мы можем добавить расширение к классу 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();
}
}
Как, любые группы, которые вы создаете? Конечно, вы можете добавлять пользователей в несколько групп, поэтому у вас есть все необходимые люди в группе с требуемыми разрешениями. Тогда неважно, что такое дефолт. – Walf
Это тоже сработает. Но я пытаюсь создать более автоматизированное решение для каждой установки SilverStripe, поэтому я предпочитаю жесткое кодирование этого в модуле. – Faloude