【发布时间】:2014-06-02 04:42:38
【问题描述】:
当用户不是管理员,但他分配的组有权访问 ModelAdmin 时,模型管理页面列在菜单中,用户可以访问它,但是索引视图中不显示任何记录。
要显示记录,需要在模型中设置权限。文档说要这样做:
http://doc.silverstripe.org/framework/en/3.1/reference/modeladmin
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 为 Null。将这些方法设置为返回 true 会显示记录。这安全吗?或者这是否让任何人都能够编辑记录?以组无权访问该模型管理员的用户身份登录似乎不允许他们进入列表页面,但这似乎是错误的做法。
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;
}
允许组查看和编辑模型管理员记录的最佳方式是什么?
【问题讨论】:
-
感谢编辑,我不知道我可以标记语言。将来会做。 :)
标签: silverstripe