From 445210179042b2c4dde6750925e3688dbf1ec426 Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Sat, 21 Nov 2009 11:05:13 +0000 Subject: [PATCH] API CHANGE Refactored hiding of Permissions added in r92428. Added PermissionCheckboxSetField?->setHiddenPermissions() (from r92865) git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/branches/2.4@92878 467b73ca-7a2a-4603-9d3b-597d59a354a9 --- security/PermissionCheckboxSetField.php | 24 +++++++++++++++++-- .../PermissionCheckboxSetFieldTest.php | 24 +++++++++++++++++++ tests/security/PermissionTest.php | 14 ----------- 3 files changed, 46 insertions(+), 16 deletions(-) create mode 100644 tests/security/PermissionCheckboxSetFieldTest.php 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