對數據對象的權限要求默認情況下,「管理員」權限。我平時只需添加一個擴展數據對象應當由非管理員可編輯的,是這樣的:
class CanEditExtension extends DataExtension
{
public function canEdit($member){
return
Permission::check('CMS_ACCESS_CMSMain', 'any', $member)
|| Permission::check('CMS_ACCESS_LeftAndMain', 'any', $member);
}
public function canView($member){
return
Permission::check('CMS_ACCESS_CMSMain', 'any', $member)
|| Permission::check('CMS_ACCESS_LeftAndMain', 'any', $member);
}
public function canCreate($member = null){
return
Permission::check('CMS_ACCESS_CMSMain', 'any', $member)
|| Permission::check('CMS_ACCESS_LeftAndMain', 'any', $member);
}
public function canDelete($member = null){
return
Permission::check('CMS_ACCESS_CMSMain', 'any', $member)
|| Permission::check('CMS_ACCESS_LeftAndMain', 'any', $member);
}
}
然後,應用通過YAML配置擴展:
# in mysite/_config/config.yml
MyDataObject:
extensions:
- CanEditExtension
或者您可以直接在你的類指定擴展:
class MyDataObject extends DataObject
{
private static $extensions = array('CanEditExtension');
}
你可以設置PermissionProvider在數據對象和比設定什麼都權限,你需要每CMS或做模型級權限一些動態的東西。如果它基本適合你的需要(canView,canEdit,canDelete,canCreate)到模型→第二鏈接。 https://docs.silverstripe.org/en/3.3/developer_guides/security/permissions/ https://docs.silverstripe.org/en/3.3/developer_guides/model/permissions/ – munomono
嗨,謝謝,但我忘了提到我正在使用Silverstripe 3.1 –
Maciej - 'PermissionProvider'仍然存在於3.1中,實際上它仍然存在於3.3中https://github.com/silverstripe/silverstripe-framework/blob/3.3/security/PermissionProvider.php – theruss