0

下午好,

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

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

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

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

对于代码场景,您可以查看我的一篇文章:Silverstripe 3 - Unable to implement controller access security from CMS

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

感谢你的协助。

更新 - 示例代码

///>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 生成的管理器接口添加组件。最终用户如何向这些添加的组件添加单独的权限?谢谢。

更新 2
示例:添加扩展 ModelAdmin 的流程数据对象将在后端为您提供 使用 ModelAdmin 功能处理 DataObject

然后,当您单击生成的“添加进程”按钮时,您将获得以下信息: 添加由 ModelAdmin 和 DataObject 生成的流程表单

最后,有人填写表格并单击“创建”按钮,将数据保存在数据库中。看起来像这样: 添加进程 MySQL 数据

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

4

1 回答 1

0

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

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

请参阅教程站点上的示例代码

于 2014-11-09T19:56:53.077 回答