Silverstripe 使用模型管理员访问一个页面
Silverstripe access to one page with model admin
当一组仅限于一个站点部分时,有人知道如何访问数据对象条目吗?
我有这样的部分:
Home
About us
Products | <----- Group "Marketing" have an access to this place only.
|-> Product group 1
|-> Product group 2
我遇到的问题是我可以限制 "Marketing" 组的访问权限并且他们能够编辑和查看页面(和 children-pages)但看不到 DataObject 条目(没有列表)以及 add/delete 或编辑这些条目。
如果我将 "all administrator access" 设置为 "Marketing" 组,它可以工作,但同时该组可以访问整个站点。 (我希望它只到 "Products",它是 children。
有人知道如何解决这个问题吗?
DataObjects 的权限默认需要 "ADMIN" 权限。我通常只添加一个非管理员可编辑的 DataObjects 扩展,如下所示:
class CanEditExtension extends DataExtension
{
public function canEdit($member){
return
Permission::check('CMS_ACCESS_CMSMain', 'any', $member)
|| Permission::check('CMS_ACCESS_LeftAndMain', 'any', $member);
}
public function canView($member){
return
Permission::check('CMS_ACCESS_CMSMain', 'any', $member)
|| Permission::check('CMS_ACCESS_LeftAndMain', 'any', $member);
}
public function canCreate($member = null){
return
Permission::check('CMS_ACCESS_CMSMain', 'any', $member)
|| Permission::check('CMS_ACCESS_LeftAndMain', 'any', $member);
}
public function canDelete($member = null){
return
Permission::check('CMS_ACCESS_CMSMain', 'any', $member)
|| Permission::check('CMS_ACCESS_LeftAndMain', 'any', $member);
}
}
然后,通过 YAML 配置应用扩展:
# in mysite/_config/config.yml
MyDataObject:
extensions:
- CanEditExtension
或者您可以直接在 class:
中指定扩展名
class MyDataObject extends DataObject
{
private static $extensions = array('CanEditExtension');
}
当一组仅限于一个站点部分时,有人知道如何访问数据对象条目吗?
我有这样的部分:
Home
About us
Products | <----- Group "Marketing" have an access to this place only.
|-> Product group 1
|-> Product group 2
我遇到的问题是我可以限制 "Marketing" 组的访问权限并且他们能够编辑和查看页面(和 children-pages)但看不到 DataObject 条目(没有列表)以及 add/delete 或编辑这些条目。
如果我将 "all administrator access" 设置为 "Marketing" 组,它可以工作,但同时该组可以访问整个站点。 (我希望它只到 "Products",它是 children。
有人知道如何解决这个问题吗?
DataObjects 的权限默认需要 "ADMIN" 权限。我通常只添加一个非管理员可编辑的 DataObjects 扩展,如下所示:
class CanEditExtension extends DataExtension
{
public function canEdit($member){
return
Permission::check('CMS_ACCESS_CMSMain', 'any', $member)
|| Permission::check('CMS_ACCESS_LeftAndMain', 'any', $member);
}
public function canView($member){
return
Permission::check('CMS_ACCESS_CMSMain', 'any', $member)
|| Permission::check('CMS_ACCESS_LeftAndMain', 'any', $member);
}
public function canCreate($member = null){
return
Permission::check('CMS_ACCESS_CMSMain', 'any', $member)
|| Permission::check('CMS_ACCESS_LeftAndMain', 'any', $member);
}
public function canDelete($member = null){
return
Permission::check('CMS_ACCESS_CMSMain', 'any', $member)
|| Permission::check('CMS_ACCESS_LeftAndMain', 'any', $member);
}
}
然后,通过 YAML 配置应用扩展:
# in mysite/_config/config.yml
MyDataObject:
extensions:
- CanEditExtension
或者您可以直接在 class:
中指定扩展名class MyDataObject extends DataObject
{
private static $extensions = array('CanEditExtension');
}