Skip to content

Instantly share code, notes, and snippets.

@stecman
Last active December 7, 2015 17:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save stecman/6402f843d1cce1fc2762 to your computer and use it in GitHub Desktop.
Save stecman/6402f843d1cce1fc2762 to your computer and use it in GitHub Desktop.
SilverStripe extension to use the permissions for SiteTree on other dataobjects
<?php
/**
* Apply the SiteTree edit/view/delete permissions/roles to any DataObject
*
* By default DataObjects are only writable by admin users, which isn't all that useful.
* The null return values indicate to the calling code in DataObject that the extended
* method shouldn't affect the outcome of the permission check.
*
* @see DataObject::extendedCan()
*/
class SiteTreePermissionsExtension extends DataExtension
{
public function canView($member = null)
{
if(!$member instanceof Member) {
$member = Member::currentUser();
}
if (Permission::checkMember($member, 'SITETREE_VIEW_ALL')) {
return true;
}
return null;
}
public function canCreate($member = null)
{
if (Permission::checkMember($member, 'SITETREE_EDIT_ALL')) {
return true;
}
return null;
}
public function canEdit($member = null)
{
if(!$member instanceof Member) {
$member = Member::currentUser();
}
if (Permission::checkMember($member, 'SITETREE_EDIT_ALL')) {
return true;
}
return null;
}
public function canDelete($member = null)
{
if(!$member instanceof Member) {
$member = Member::currentUser();
}
if (Permission::checkMember($member, 'SITETREE_EDIT_ALL')) {
return true;
}
return null;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment