Dynamic silverstripe 3-如何向生成的数据对象添加访问控制?

Dynamic silverstripe 3-如何向生成的数据对象添加访问控制?,dynamic,silverstripe,access-control,data-objects,Dynamic,Silverstripe,Access Control,Data Objects,下午好 如果这个问题不够清楚,请告诉我,我会尽量直截了当地回答。 如何向最终用户使用我的数据对象生成的对象添加访问控制? 示例:我有一个扩展DataObject的类。有人在后端登录;填写CMS为数据对象生成的表单。然后CMS在数据库中创建一条记录。 我想为数据库中新创建的记录添加一个访问控制。 对于代码场景,您可以查看我的一篇帖子: 我能想到的唯一其他提问方式是:如何通过CMS动态(或以编程方式)为DataObject扩展创建的记录创建权限 谢谢你的帮助 更新-示例代码 现在,终端用户可以从后

下午好

如果这个问题不够清楚,请告诉我,我会尽量直截了当地回答。

如何向最终用户使用我的数据对象生成的对象添加访问控制?

示例:我有一个扩展DataObject的类。有人在后端登录;填写CMS为数据对象生成的表单。然后CMS在数据库中创建一条记录。

我想为数据库中新创建的记录添加一个访问控制。

对于代码场景,您可以查看我的一篇帖子:

我能想到的唯一其他提问方式是:如何通过CMS动态(或以编程方式)为DataObject扩展创建的记录创建权限

谢谢你的帮助

更新-示例代码

现在,终端用户可以从后端使用扩展ModelAdmin生成的Manager界面添加组件。如何向最终用户添加的组件添加个人权限? 谢谢

更新2
示例:添加扩展ModelAdmin的流程数据对象将在后端提供此功能

然后,当您单击生成的“添加流程”按钮时,您将看到:

最后,有人填写表单并单击“创建”按钮,将数据保存到数据库中。看起来是这样的:

现在,在MySQL中创建的记录上,我想向该记录添加粒度权限。也就是说,对于创建的每个记录,我希望能够通过组/个人等拒绝/允许访问它。

对于SilverStripe框架,这可能吗?谢谢。

在数据对象上实现canView、canEdit、canDelete和/或canCreate功能

每个函数将根据您设置的条件返回true或false-任何条件,而不仅仅是CMS中定义的条件


.

谢谢您的回复,但我可能遗漏了什么。我已经实现了canView等功能。但它们只允许您授予/拒绝对对象本身的访问权,而不允许对其创建的内容进行访问。例如,如果我创建了一个叫做“Car”的东西,它的对象类型是“Component”;权限方法仅允许您授予/拒绝对对象集合“组件”的访问权限。因此,每个创建的组件(如“Car”)都会继承这些权限,而我没有权限授予/拒绝对单独创建的组件(如“Car”)的访问权限。对此有进一步的想法吗?您需要在与Car相关的每个数据对象上实现这些功能。因此,如果Car有许多组件对象,那么组件类必须实现这些方法,并检查在Car上设置的条件。您的条件条件看起来像return$this->Car()->SomeProperty=='foo'Hi早上好,Elliot,我认为我没有正确解释自己,或者我误解了什么。Car没有定义的类,因为它不扩展DataObject。它由最终用户在CMS编辑器中为组件数据对象创建。他们也可以根据自己的意愿添加“飞机”或其他任何内容。但是对于这些创建的记录,我想动态地为每个创建的组件添加单独的权限。这能做到吗?我已经更新了上面的问题,添加了一个代码示例,这可能会有进一步的帮助。有人知道这在Silverstripe中是否可行,或者对此有什么想法吗?谢谢
///>snippet, note it also has a Manager class that extends ModelAdmin which manages this!
class component extends DataObject implements PermissionProvider{
    public static $db = array(
         'Title' => 'Varchar',
         'Description' => 'Text',
         'Status' => "Enum('Hidden, Published', 'Hidden')",
         'Weight' => 'Int'
    );
    
    ///All the regular permission checks (overrides), for the interface goes here, etc...
    ///That is: canView, canDelete, canEdit, canCreate, providePermissions
}