我有数据对象:
class Documents extends DataObject implements PermissionProvider {
private static $db = array(
'DocType' => 'Text',
'ApprovalDate' => 'Date',
'PublicationDate' => 'Date',
'DocNumber' => 'Text',
'DocTitle' => 'Text',
'KeyWords' => 'Text'
);
private static $has_one = array(
'Member' => 'Member'
);
...
static $api_access = true;
public function canEdit($member = false) {
return (Member::currentUserID() == $this->MemberID) || parent::canEdit($member);
}
public function canDelete($member = false) {
return (Member::currentUserID() == $this->MemberID) || parent::canDelete($member);
}
public function canView($member = false) {
return Permission::check('DOCUMENTS_VIEW');
}
public function canCreate($member = false) {
return Permission::check('DOCUMENTS_CREATE');
}
function providePermissions() {
return array(
'DOCUMENTS_VIEW' => 'View Documents ',
'DOCUMENTS_EDIT' => 'Edit Documents ',
'DOCUMENTS_DELETE' => 'Delete Documents ',
'DOCUMENTS_CREATE' => 'Create Documents '
);
}
我创建了“文档开发人员”组,并授予它rightes DOCUMENTS_VIEW,EDIT,DELETE,CREATE。我希望该组的所有用户只能查看所有文档并创建新文档,只有所有者(ID == MemberID的用户)才能编辑和删除他的文档。 当用户尝试编辑或删除其文档或查看其他文档时,它可以正常工作。但是当他尝试创建新文档(在CMS中按“创建”按钮)时,弹出窗口“禁止”出现:(You can see CMS Window here) 请给我任何想法。
答案 0 :(得分:0)
我在canEdit()函数中做了一些改进:
public function canEdit($member = false) {
if ($this->MemberID) return (Member::currentUserID() == $this->MemberID) || parent::canEdit($member);
return Permission::check('DOCUMENTS_EDIT') || parent::canEdit($member) ;
}
现在用户可以创建文档。在我看来,当用户尝试创建新文档时,$ this-> MemberID未定义。