下午好,
如果这个问题不够明确,请告诉我,我会尽量做到尽可能直截了当。
如何为最终用户使用我的数据对象生成的对象添加访问控制?
示例:我有一个扩展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的添加流程数据对象将在后端为您提供此功能
然后,当您点击生成的'添加流程'按钮,你会得到这个:
最后,有人会填写表单并点击“创建”。按钮,用于保存数据库中的数据。看起来像这样:
现在,在MySQL创建的记录中,我想为该记录添加细化权限。意思是,对于创建的每条记录,我希望能够通过组/个人等拒绝/允许访问它 是否可以使用SilverStripe框架?感谢。
答案 0 :(得分:0)
在DataObject上实现函数canView,canEdit,canDelete和/或canCreate。
每个函数都会返回true或false,具体取决于您设置的条件 - 任何条件,而不仅仅是CMS中定义的条件。