首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ModelAdmin DataObjects的权限

ModelAdmin DataObjects的权限
EN

Stack Overflow用户
提问于 2014-06-02 04:42:38
回答 1查看 1.2K关注 0票数 2

当用户不是管理员,但他指定的组可以访问ModelAdmin时,菜单中列出了模型管理页面&用户可以访问它,但是索引视图中没有显示记录。

要显示记录,需要在模型中设置权限。文件上说要这样做:

http://doc.silverstripe.org/framework/en/3.1/reference/modeladmin

代码语言:javascript
复制
class Category extends DataObject {
  // ...
    public function canView($member = null) {
        return Permission::check('CMS_ACCESS_CMSMain', 'any', $member);
    }
    public function canEdit($member = null) {
        return Permission::check('CMS_ACCESS_CMSMain', 'any', $member);
    }
    public function canDelete($member = null) {
        return Permission::check('CMS_ACCESS_CMSMain', 'any', $member);
    }
    public function canCreate($member = null) {
        return Permission::check('CMS_ACCESS_CMSMain', 'any', $member);
    }
}

但是,这是不工作的,因为$member是空的。将这些方法设置为返回true显示记录。这安全吗?还是说这让任何人都能编辑记录?以其组无法访问该模型管理员的用户身份登录,似乎不允许他们访问列表页面,但这似乎是错误的做法。

代码语言:javascript
复制
    public function canView($member = null) {
        return null;
    }
    public function canEdit($member = null) {
        return true;
    }
    public function canDelete($member = null) {
         return true;
    }
    public function canCreate($member = null) {
         return true;
    }

允许一个组查看和编辑模型管理记录的最佳方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-02 06:40:29

这个例子是您想要遵循的,尽管具有不同的权限名。该示例中的权限名是如果用户能够访问CMSMain,这是处理页面的CMS的一部分。

要获得权限的名称,可以使用ModelAdmin的类名(例如,CategoryAdmin)并在其前面加上CMS_ACCESS_ (在本例中将给出CMS_ACCESS_CategoryAdmin )。

至于$membernull,那只是默认值。因此,只有在没有传入值的情况下,$member才是null。但是,这实际上并不重要,因为Permission::check专门处理在null值中传递的内容,并使用当前登录的用户。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23987457

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档