Store 'permission' property for each form
authorTim Otten <totten@civicrm.org>
Thu, 19 Dec 2019 01:59:46 +0000 (17:59 -0800)
committerCiviCRM <info@civicrm.org>
Wed, 16 Sep 2020 02:13:20 +0000 (19:13 -0700)
ext/afform/core/CRM/Afform/AfformScanner.php
ext/afform/core/Civi/Api4/Afform.php
ext/afform/mock/ang/mockPage.aff.json
ext/afform/mock/tests/phpunit/api/v4/AfformTest.php

index f0cc0f6f4d24308d196707c34619a60b73965cdc..61ac85c95ef6180b313a24ccff7017c52dfc0a34 100644 (file)
@@ -138,6 +138,7 @@ class CRM_Afform_AfformScanner {
       'title' => '',
       'description' => '',
       'is_public' => FALSE,
+      'permission' => 'access CiviCRM',
     ];
 
     $metaFile = $this->findFilePath($name, self::METADATA_FILE);
index 9dc720ddf86cf8f17e67a312e1bd1f87706525e4..cca20d19d381dec92b72cd9701df043d091fdf15 100644 (file)
@@ -107,6 +107,9 @@ class Afform extends AbstractEntity {
         [
           'name' => 'server_route',
         ],
+        [
+          'name' => 'permission',
+        ],
         [
           'name' => 'layout',
         ],
index 9b45e0bfbebc575f1de2b4e2b3eda2c419df6f03..de1f8212ec5f5fe5bfe64ba0708c8a5bbae6e388 100644 (file)
@@ -1 +1 @@
-{"server_route": "civicrm/mock-page", "requires":["extraMock"]}
+{"server_route": "civicrm/mock-page", "requires":["extraMock"], "permission": "access Foobar" }
index c8645bf17b4524fb3cddf99f5ffe81692121337c..cd1af772d22044d94f5cde7ebe714688f1544819 100644 (file)
@@ -30,10 +30,10 @@ class api_v4_AfformTest extends api_v4_AfformTestCase {
 
   public function getBasicDirectives() {
     return [
-      ['mockPage', ['title' => '', 'description' => '', 'server_route' => 'civicrm/mock-page']],
-      ['mockBareFile', ['title' => '', 'description' => '']],
-      ['mockFoo', ['title' => '', 'description' => '']],
-      ['mock-weird-name', ['title' => 'Weird Name', 'description' => '']],
+      ['mockPage', ['title' => '', 'description' => '', 'server_route' => 'civicrm/mock-page', 'permission' => 'access Foobar']],
+      ['mockBareFile', ['title' => '', 'description' => '', 'permission' => 'access CiviCRM']],
+      ['mockFoo', ['title' => '', 'description' => '', 'permission' => 'access CiviCRM']],
+      ['mock-weird-name', ['title' => 'Weird Name', 'description' => '', 'permission' => 'access CiviCRM']],
     ];
   }
 
@@ -58,6 +58,7 @@ class api_v4_AfformTest extends api_v4_AfformTestCase {
     $this->assertEquals($get($originalMetadata, 'title'), $get($result[0], 'title'), $message);
     $this->assertEquals($get($originalMetadata, 'description'), $get($result[0], 'description'), $message);
     $this->assertEquals($get($originalMetadata, 'server_route'), $get($result[0], 'server_route'), $message);
+    $this->assertEquals($get($originalMetadata, 'permission'), $get($result[0], 'permission'), $message);
     $this->assertTrue(is_array($result[0]['layout']), $message);
     $this->assertEquals(TRUE, $get($result[0], 'has_packaged'), $message);
     $this->assertEquals(FALSE, $get($result[0], 'has_local'), $message);
@@ -66,6 +67,7 @@ class api_v4_AfformTest extends api_v4_AfformTestCase {
     $result = Civi\Api4\Afform::update()
       ->addWhere('name', '=', $formName)
       ->addValue('description', 'The temporary description')
+      ->addValue('permission', 'access foo')
       ->execute();
     $this->assertEquals($formName, $result[0]['name'], $message);
     $this->assertEquals('The temporary description', $result[0]['description'], $message);
@@ -76,6 +78,7 @@ class api_v4_AfformTest extends api_v4_AfformTestCase {
     $this->assertEquals($get($originalMetadata, 'title'), $get($result[0], 'title'), $message);
     $this->assertEquals('The temporary description', $get($result[0], 'description'), $message);
     $this->assertEquals($get($originalMetadata, 'server_route'), $get($result[0], 'server_route'), $message);
+    $this->assertEquals('access foo', $get($result[0], 'permission'), $message);
     $this->assertTrue(is_array($result[0]['layout']), $message);
     $this->assertEquals(TRUE, $get($result[0], 'has_packaged'), $message);
     $this->assertEquals(TRUE, $get($result[0], 'has_local'), $message);
@@ -87,6 +90,7 @@ class api_v4_AfformTest extends api_v4_AfformTestCase {
     $this->assertEquals($get($originalMetadata, 'title'), $get($result[0], 'title'), $message);
     $this->assertEquals($get($originalMetadata, 'description'), $get($result[0], 'description'), $message);
     $this->assertEquals($get($originalMetadata, 'server_route'), $get($result[0], 'server_route'), $message);
+    $this->assertEquals($get($originalMetadata, 'permission'), $get($result[0], 'permission'), $message);
     $this->assertTrue(is_array($result[0]['layout']), $message);
     $this->assertEquals(TRUE, $get($result[0], 'has_packaged'), $message);
     $this->assertEquals(FALSE, $get($result[0], 'has_local'), $message);