2

当一组仅限于一个站点部分时,有人知道如何访问数据对象条目吗?

我有这样的部分:

Home
About us 
Products |        <----- Group "Marketing" have an access to this place only.
         |-> Product group 1
         |-> Product group 2

我遇到的问题是我可以限制对“营销”组的访问,他们能够编辑和查看页面(和子页面)但看不到 DataObject 条目(没有列表)以及添加/删除或编辑这些条目。

如果我将“所有管理员访问”设置为“营销”组,它可以工作,但同时该组可以访问整个站点。(我希望它只用于“产品”,它是孩子。

有谁知道如何解决这个问题?

4

1 回答 1

3

默认情况下,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 MyDataObject extends DataObject
{
    private static $extensions = array('CanEditExtension');
}
于 2016-05-19T19:28:46.247 回答