Content management system silverstripe权限-阻止编辑dataobject

Content management system silverstripe权限-阻止编辑dataobject,content-management-system,silverstripe,Content Management System,Silverstripe,目前,我正在检查Dataobject的canEdit和canDelete函数。据我所知,我必须在模板或其他php代码中手动调用这些函数。。。是否有办法防止对特定数据对象进行一般编辑/删除?当我第一次看到canEdit函数时,我希望silverstripe在写入DataObject之前自动检查它 因此,我只希望允许管理员编写此数据对象: public function canEdit($member = null){ return( Permission::checkMem

目前,我正在检查Dataobject的canEdit和canDelete函数。据我所知,我必须在模板或其他php代码中手动调用这些函数。。。是否有办法防止对特定数据对象进行一般编辑/删除?当我第一次看到canEdit函数时,我希望silverstripe在写入DataObject之前自动检查它

因此,我只希望允许管理员编写此数据对象:

public function canEdit($member = null){
    return(
        Permission::checkMember($member = Member::currentUser(), 'ADMIN')
    );
}
问候,, 弗洛里安


我仍然想知道这到底适用于哪里。如果我在DataObject类中说canEdit(){return false},那么控制器仍然可以编辑DataObject。。。或者我必须在控制器中手动调用该函数canEdit(),例如在保存数据对象之前?请将示例代码放入。。。。并在这里提供链接。基本上你是在类中编写扩展数据对象的。粘贴一些代码并给出你想要实现的场景。那将有助于我帮助你。请同时指定silverstripe版本。感谢粘贴DataObject类:我只是想知道如何全局设置该DataObject的权限。例如,如果您以管理员身份登录,就可以创建一个新的数据对象。但在我看来,我总是需要手动调用canCreate类,以查看当前用户是否有创建DataObject的权限。Silverstripe不会在创建其中一个数据对象之前自动检查此项。True?将此代码放入DataObject类公共函数canEdit($member){if(Permission::check('ADMIN')){return false;}}然后以管理员身份登录,可以编辑DataObject吗?若看到,编辑按钮将从网格列表视图中删除。当您使用后端GUI时,此功能正常工作。如果像canView/canEdit这样的权限方法返回true,那么您将能够执行该操作。如果您没有使用GUI,那么在通过您的代码直接交互时,您必须检查当前用户是否具有权限。我仍然不知道这到底适用于哪里。如果我在DataObject类中说canEdit(){return false},那么控制器仍然可以编辑DataObject。。。或者我必须在控制器中手动调用该函数canEdit(),例如在保存数据对象之前?请将示例代码放入。。。。并在这里提供链接。基本上你是在类中编写扩展数据对象的。粘贴一些代码并给出你想要实现的场景。那将有助于我帮助你。请同时指定silverstripe版本。感谢粘贴DataObject类:我只是想知道如何全局设置该DataObject的权限。例如,如果您以管理员身份登录,就可以创建一个新的数据对象。但在我看来,我总是需要手动调用canCreate类,以查看当前用户是否有创建DataObject的权限。Silverstripe不会在创建其中一个数据对象之前自动检查此项。True?将此代码放入DataObject类公共函数canEdit($member){if(Permission::check('ADMIN')){return false;}}然后以管理员身份登录,可以编辑DataObject吗?若看到,编辑按钮将从网格列表视图中删除。当您使用后端GUI时,此功能正常工作。如果像canView/canEdit这样的权限方法返回true,那么您将能够执行该操作。如果您没有使用GUI,那么在通过代码直接交互时,您必须检查当前用户是否具有权限。
public function canEdit($member){
  if (Permission::check('ADMIN')){
      return true;
  }else{
     // do something here if applicable 
  } 
}