【问题标题】:SilverStripe Model-Level Permissions: canCreate() doesn't workSilverStripe 模型级权限:canCreate() 不起作用
【发布时间】:2016-04-14 07:15:26
【问题描述】:

我有数据对象:

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 '
 );
} 

我创建了组“文档开发人员”并授予它 DOCUMENTS_VIEW、EDIT、DELETE、CREATE 权限。我希望该组的所有用户只能查看所有文档并创建新文档,并且只有所有者(ID == MemberID 的用户)可以编辑和删除他的文档。 当用户尝试编辑或删除他的文档或查看其他文档时,它可以正常工作。但是当他尝试创建新文档(在 CMS 中按“创建”按钮)时,会出现一个弹出窗口“禁止”:(You can see CMS Window here) 请给我任何想法。

【问题讨论】:

  • 您在创建权限后是否进行了开发/构建/刷新?禁止似乎是一个不相关的错误,在你得到这个之后点击“F5”或重新加载怎么样?然后您可能会看到一条错误消息,该消息被 ajax api 隐藏。您还可以检查错误日志或网络流量(例如,使用 firebugs 网络选项卡)以获取错误消息。

标签: silverstripe


【解决方案1】:

我对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 未定义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-14
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    相关资源
    最近更新 更多