2009-10-16 00:27:56 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
/**
|
|
|
|
* A PermissionRole represents a collection of permission codes that can be applied to groups.
|
|
|
|
*
|
|
|
|
* Because permission codes are very granular, this lets website administrators create more
|
|
|
|
* business-oriented units of access control - Roles - and assign those to groups.
|
|
|
|
*/
|
|
|
|
class PermissionRole extends DataObject {
|
|
|
|
static $db = array(
|
|
|
|
"Title" => "Varchar",
|
2009-10-29 23:07:44 +01:00
|
|
|
"OnlyAdminCanApply" => "Boolean"
|
2009-10-16 00:27:56 +02:00
|
|
|
);
|
|
|
|
|
|
|
|
static $has_many = array(
|
|
|
|
"Codes" => "PermissionRoleCode",
|
|
|
|
);
|
|
|
|
|
|
|
|
static $belongs_many_many = array(
|
|
|
|
"Groups" => "Group",
|
|
|
|
);
|
2009-10-16 00:28:11 +02:00
|
|
|
|
|
|
|
static $default_sort = 'Title';
|
|
|
|
|
2010-03-10 03:23:41 +01:00
|
|
|
static $singular_name = 'Role';
|
|
|
|
|
|
|
|
static $plural_name = 'Roles';
|
|
|
|
|
2009-10-16 00:28:11 +02:00
|
|
|
function getCMSFields() {
|
|
|
|
$fields = parent::getCMSFields();
|
|
|
|
|
|
|
|
$fields->removeFieldFromTab('Root', 'Codes');
|
|
|
|
$fields->removeFieldFromTab('Root', 'Groups');
|
|
|
|
|
2010-03-10 03:23:41 +01:00
|
|
|
$fields->addFieldToTab(
|
|
|
|
'Root.Main',
|
|
|
|
$permissionField = new PermissionCheckboxSetField(
|
|
|
|
'Codes',
|
|
|
|
singleton('Permission')->i18n_plural_name(),
|
|
|
|
'PermissionRoleCode',
|
|
|
|
'RoleID'
|
|
|
|
)
|
|
|
|
);
|
|
|
|
$permissionField->setHiddenPermissions(SecurityAdmin::$hidden_permissions);
|
2009-10-16 00:28:11 +02:00
|
|
|
|
|
|
|
return $fields;
|
|
|
|
}
|
2009-12-10 04:44:35 +01:00
|
|
|
|
|
|
|
function onAfterDelete() {
|
|
|
|
parent::onAfterDelete();
|
|
|
|
|
|
|
|
// Delete associated permission codes
|
|
|
|
$codes = $this->Codes();
|
|
|
|
foreach ( $codes as $code ) {
|
|
|
|
$code->delete();
|
|
|
|
}
|
|
|
|
}
|
2009-10-16 00:28:11 +02:00
|
|
|
}
|