diff --git a/security/PermissionCheckboxSetField.php b/security/PermissionCheckboxSetField.php index d3eafeed4..c0a8033eb 100644 --- a/security/PermissionCheckboxSetField.php +++ b/security/PermissionCheckboxSetField.php @@ -1,12 +1,33 @@ filterField = $filterField; $this->managedClass = $managedClass; $this->record = $record; parent::__construct($name, $title, Permission::get_codes(true)); } + + /** + * @param Array $codes + */ + function setHiddenPermissions($codes) { + $this->hiddenPermissions = $codes; + } + + /** + * @return Array + */ + function getHiddenPermissions() { + return $this->hiddenPermissions; + } function Field() { Requirements::css(SAPPHIRE_DIR . '/css/CheckboxSetField.css'); @@ -69,9 +90,8 @@ class PermissionCheckboxSetField extends CheckboxSetField { if($source) { foreach($source as $categoryName => $permissions) { $options .= "
  • $categoryName
  • "; - $hiddens = Permission::$hidden_permissions; foreach($permissions as $code => $permission) { - if(in_array($code, $hiddens)) continue; + if(in_array($code, $this->hiddenPermissions)) continue; $key = $code; $value = $permission['name']; diff --git a/tests/security/PermissionCheckboxSetFieldTest.php b/tests/security/PermissionCheckboxSetFieldTest.php new file mode 100644 index 000000000..8deff75a4 --- /dev/null +++ b/tests/security/PermissionCheckboxSetFieldTest.php @@ -0,0 +1,24 @@ +setHiddenPermissions( + array('CMS_ACCESS_ReportAdmin') + ); + $this->assertEquals( + $f->getHiddenPermissions(), + array('CMS_ACCESS_ReportAdmin') + ); + $this->assertContains('CMS_ACCESS_CMSMain', $f->Field()); + $this->assertNotContains('CMS_ACCESS_ReportAdmin', $f->Field()); + } +} \ No newline at end of file diff --git a/tests/security/PermissionTest.php b/tests/security/PermissionTest.php index ca56dcf29..a28e61d4f 100644 --- a/tests/security/PermissionTest.php +++ b/tests/security/PermissionTest.php @@ -40,18 +40,4 @@ class PermissionTest extends SapphireTest { // Check that a random permission that shouldn't be there isn't $this->assertFalse(Permission::checkMember($member, "CMS_ACCESS_SecurityAdmin")); } - - function testHiddenPermissions(){ - $permissionCheckboxSet = new PermissionCheckboxSetField('Permissions','Permissions','Permission','GroupID'); - $this->assertContains('CMS_ACCESS_CMSMain', $permissionCheckboxSet->Field()); - $this->assertContains('CMS_ACCESS_AssetAdmin', $permissionCheckboxSet->Field()); - - Permission::add_to_hidden_permissions('CMS_ACCESS_CMSMain'); - Permission::add_to_hidden_permissions('CMS_ACCESS_AssetAdmin'); - $this->assertNotContains('CMS_ACCESS_CMSMain', $permissionCheckboxSet->Field()); - $this->assertNotContains('CMS_ACCESS_AssetAdmin', $permissionCheckboxSet->Field()); - - Permission::remove_from_hidden_permissions('CMS_ACCESS_AssetAdmin'); - $this->assertContains('CMS_ACCESS_AssetAdmin', $permissionCheckboxSet->Field()); - } } \ No newline at end of file