默认情况下,没有授予ContentAuthor
的具体PermissionCode
。这是关于权限代码EDIT_SITECONFIG
(启用内容作者来查看和编辑“设置”部分)。
Security > Groups > Content Authors > Permissions
>管理站点配置SilverStripe硬编码权限设置EDIT_SITECONFIG
你怎么能强制此权限默认授予ContentAuthors
:
此权限可授予roles
?
默认情况下,没有授予ContentAuthor
的具体PermissionCode
。这是关于权限代码EDIT_SITECONFIG
(启用内容作者来查看和编辑“设置”部分)。
Security > Groups > Content Authors > Permissions
>管理站点配置SilverStripe硬编码权限设置EDIT_SITECONFIG
你怎么能强制此权限默认授予ContentAuthors
:
此权限可授予roles
?
我们可以给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