From 3d3a7160c1cb239e12baa708c536d0bc6d6aa89d Mon Sep 17 00:00:00 2001 From: Coleman Watts Date: Fri, 7 May 2021 20:20:43 -0400 Subject: [PATCH] Implement checkAccess for EntityTags and Notes --- CRM/Contact/AccessTrait.php | 2 +- CRM/Core/BAO/EntityTag.php | 1 + CRM/Core/BAO/Note.php | 1 + CRM/Core/DynamicFKAccessTrait.php | 46 ++++++++++++++++++++++ tests/phpunit/api/v3/ACLPermissionTest.php | 3 -- 5 files changed, 49 insertions(+), 4 deletions(-) create mode 100644 CRM/Core/DynamicFKAccessTrait.php diff --git a/CRM/Contact/AccessTrait.php b/CRM/Contact/AccessTrait.php index d3a5e39661..466198a3a7 100644 --- a/CRM/Contact/AccessTrait.php +++ b/CRM/Contact/AccessTrait.php @@ -37,7 +37,7 @@ trait CRM_Contact_AccessTrait { return in_array(__CLASS__, ['CRM_Core_BAO_Phone', 'CRM_Core_BAO_Email', 'CRM_Core_BAO_Address']) && CRM_Core_Permission::check('edit all events', $userID); } - return CRM_Contact_BAO_Contact::checkAccess($action, ['id' => $cid], $userID); + return CRM_Contact_BAO_Contact::checkAccess(CRM_Core_Permission::EDIT, ['id' => $cid], $userID); } } diff --git a/CRM/Core/BAO/EntityTag.php b/CRM/Core/BAO/EntityTag.php index cbd60e2cd6..35950c5cf1 100644 --- a/CRM/Core/BAO/EntityTag.php +++ b/CRM/Core/BAO/EntityTag.php @@ -16,6 +16,7 @@ * @copyright CiviCRM LLC https://civicrm.org/licensing */ class CRM_Core_BAO_EntityTag extends CRM_Core_DAO_EntityTag { + use CRM_Core_DynamicFKAccessTrait; /** * Given a contact id, it returns an array of tag id's the contact belongs to. diff --git a/CRM/Core/BAO/Note.php b/CRM/Core/BAO/Note.php index d63d8dea27..a08dbacf4f 100644 --- a/CRM/Core/BAO/Note.php +++ b/CRM/Core/BAO/Note.php @@ -19,6 +19,7 @@ * BAO object for crm_note table. */ class CRM_Core_BAO_Note extends CRM_Core_DAO_Note { + use CRM_Core_DynamicFKAccessTrait; /** * Const the max number of notes we display at any given time. diff --git a/CRM/Core/DynamicFKAccessTrait.php b/CRM/Core/DynamicFKAccessTrait.php new file mode 100644 index 0000000000..1fe7baae4d --- /dev/null +++ b/CRM/Core/DynamicFKAccessTrait.php @@ -0,0 +1,46 @@ + $eid], $userID); + } + return TRUE; + } + +} diff --git a/tests/phpunit/api/v3/ACLPermissionTest.php b/tests/phpunit/api/v3/ACLPermissionTest.php index 8641e253b2..35ef4147be 100644 --- a/tests/phpunit/api/v3/ACLPermissionTest.php +++ b/tests/phpunit/api/v3/ACLPermissionTest.php @@ -228,9 +228,6 @@ class api_v3_ACLPermissionTest extends CiviUnitTestCase { ]); $this->assertGreaterThan(0, $results['count']); } - if ($version == 4) { - $this->markTestIncomplete('Skipping entity_id related perms in api4 for now.'); - } $newTag = civicrm_api3('Tag', 'create', [ 'name' => 'Foo123', ]); -- 2.25.1