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

时间:2014-11-07 20:20:51

标签: dynamic silverstripe access-control data-objects

下午好,

如果这个问题不够明确,请告诉我,我会尽量做到尽可能直截了当。

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

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

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

对于代码方案,您可以查看我的一个帖子:Silverstripe 3 - Unable to implement controller access security from CMS

我能想到提出这个问题的另一种方法是:如何动态(或以编程方式)为通过CMS的DataObject扩展创建的记录创建权限?

感谢您的协助。

更新 - 示例代码

///>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
}

现在,从后端开始,最终用户可以使用通过扩展ModelAdmin生成的Manager Interface添加组件。如何为最终用户添加的组件添加个人权限? 感谢。

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

然后,当您点击生成的'添加流程'按钮,你会得到这个: Add Process form generated by ModelAdmin & DataObject

最后,有人会填写表单并点击“创建”。按钮,用于保存数据库中的数据。看起来像这样: Added process MySQL data

现在,在MySQL创建的记录中,我想为该记录添加细化权限。意思是,对于创建的每条记录,我希望能够通过组/个人等拒绝/允许访问它 是否可以使用SilverStripe框架?感谢。

1 个答案:

答案 0 :(得分:0)

在DataObject上实现函数canView,canEdit,canDelete和/或canCreate。

每个函数都会返回true或false,具体取决于您设置的条件 - 任何条件,而不仅仅是CMS中定义的条件。

See the example code on the tutorial site