Skip to content

Instantly share code, notes, and snippets.

@mooror
Created August 14, 2017 00:29
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 mooror/50e75351e20acf3780d1cf8b0ba302d4 to your computer and use it in GitHub Desktop.
Save mooror/50e75351e20acf3780d1cf8b0ba302d4 to your computer and use it in GitHub Desktop.
SS3 DataObject Permissions Functionality
<?php
class CustomDataObject extends DataObject implements PermissionProvider
{
static $api_access = true;
static $permissionsSuffix = "CUSTOMDATAOBJECT"; // Permission code will be ACTION_SUFFIX
static $permissionsDescriptor = "Custom";
static $permissionsCategory = 'Custom Object';
static $permissionsActionsArray = array('view','edit','delete','create');
static $permissionsArray = array();
function providePermissions() {
$suffix = self::$permissionsSuffix;
$descriptor = self::$permissionsDescriptor;
$category = self::$permissionsCategory;
foreach (self::$permissionsActionsArray as $action) {
$permissionName = strtoupper($action) . '_' . $suffix;
self::$permissionsArray[$permissionName] = array(
'name' => ucfirst($action) . ' an ' . $descriptor . ' object',
'help' => 'Allow user to ' . $action . ' ' . $descriptor . ' objects',
'category' => $category,
'sort' => 50
);
}
return self::$permissionsArray;
}
function canView($member = null) {
return Permission::check('VIEW_' . self::$permissionsSuffix);
}
function canEdit($member = null) {
return Permission::check('EDIT_' . self::$permissionsSuffix);
}
function canDelete($member = null) {
return Permission::check('DELETE_' . self::$permissionsSuffix);
}
function canCreate($member = null) {
return Permission::check('CREATE_' . self::$permissionsSuffix);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment