From d47b93bf7bdd7170d2483cd8229c1ac5fc1a0c8d Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Sat, 22 Jun 2019 13:07:19 -0400 Subject: [PATCH] dev/core#1066 Fix mailing permissions --- CRM/Core/Permission.php | 2 +- tests/phpunit/CRM/Core/BAO/NavigationTest.php | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/CRM/Core/Permission.php b/CRM/Core/Permission.php index d1ed8ea055..57d58ec747 100644 --- a/CRM/Core/Permission.php +++ b/CRM/Core/Permission.php @@ -621,7 +621,7 @@ class CRM_Core_Permission { } foreach ($components as $comp) { - $perm = $comp->getPermissions(FALSE, $descriptions); + $perm = $comp->getPermissions($all, $descriptions); if ($perm) { $info = $comp->getInfo(); foreach ($perm as $p => $attr) { diff --git a/tests/phpunit/CRM/Core/BAO/NavigationTest.php b/tests/phpunit/CRM/Core/BAO/NavigationTest.php index a851141726..2a46be219f 100644 --- a/tests/phpunit/CRM/Core/BAO/NavigationTest.php +++ b/tests/phpunit/CRM/Core/BAO/NavigationTest.php @@ -308,6 +308,23 @@ class CRM_Core_BAO_NavigationTest extends CiviUnitTestCase { CRM_Core_BAO_ConfigSetting::disableComponent('CiviContribute'); $this->assertFalse(CRM_Core_BAO_Navigation::checkPermission($menuItem)); + + CRM_Core_BAO_ConfigSetting::enableComponent('CiviMail'); + CRM_Core_Config::singleton()->userPermissionClass->permissions = ['access CiviMail', 'delete in CiviMail']; + $menuItem = [ + 'permission' => 'access CiviMail, delete in CiviMail', + 'operator' => 'AND', + ]; + $this->assertTrue(CRM_Core_BAO_Navigation::checkPermission($menuItem)); + $menuItem['operator'] = 'OR'; + $this->assertTrue(CRM_Core_BAO_Navigation::checkPermission($menuItem)); + CRM_Core_Config::singleton()->userPermissionClass->permissions = ['delete in CiviMail']; + $this->assertTrue(CRM_Core_BAO_Navigation::checkPermission($menuItem)); + CRM_Core_Config::singleton()->userPermissionClass->permissions = ['access CiviCRM']; + $this->assertFalse(CRM_Core_BAO_Navigation::checkPermission($menuItem)); + CRM_Core_Config::singleton()->userPermissionClass->permissions = ['access CiviMail', 'delete in CiviMail']; + CRM_Core_BAO_ConfigSetting::disableComponent('CiviMail'); + $this->assertFalse(CRM_Core_BAO_Navigation::checkPermission($menuItem)); } } -- 2.25.1