Afform: Replace Actions on Join not available for anon users
Whilst testing the work on Entity Reference fields in PR https://github.com/civicrm/civicrm-core/pull/20216 I found that when I constructed a form with the attached JSON and the attached markup I would get these errors if I filled in either the Email field or the Website field for the relevant parts
Array
(
[error_id] => ihJT-pVbh-Papi
[exception] => Civi\API\Exception\UnauthorizedException: "Cannot process APIv4 request for Individual1 (Email.replace): Action is not approved"
#0 /home/seamus/buildkit/build/47-test/web/sites/all/modules/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Submit.php(89): Civi\Afform\FormDataModel->Civi\Afform\{closure}("Email", "replace", (Array:3))
#1 /home/seamus/buildkit/build/47-test/web/sites/all/modules/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Submit.php(57): Civi\Api4\Action\Afform\Submit::saveJoins(Object(Closure), "Contact", "207", (Array:1))
#2 /home/seamus/buildkit/build/47-test/web/sites/all/modules/civicrm/vendor/symfony/event-dispatcher/EventDispatcher.php(214): Civi\Api4\Action\Afform\Submit::processContacts(Object(Civi\Afform\Event\AfformSubmitEvent), "civi.afform.submit", Object(Civi\Core\CiviEventDispatcher))
#3 /home/seamus/buildkit/build/47-test/web/sites/all/modules/civicrm/vendor/symfony/event-dispatcher/EventDispatcher.php(44): Symfony\Component\EventDispatcher\EventDispatcher->doDispatch((Array:2), "civi.afform.submit", Object(Civi\Afform\Event\AfformSubmitEvent))
#4 /home/seamus/buildkit/build/47-test/web/sites/all/modules/civicrm/Civi/Core/CiviEventDispatcher.php(129): Symfony\Component\EventDispatcher\EventDispatcher->dispatch("civi.afform.submit", Object(Civi\Afform\Event\AfformSubmitEvent))
#5 /home/seamus/buildkit/build/47-test/web/sites/all/modules/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Submit.php(36): Civi\Core\CiviEventDispatcher->dispatch("civi.afform.submit", Object(Civi\Afform\Event\AfformSubmitEvent))
#6 /home/seamus/buildkit/build/47-test/web/sites/all/modules/civicrm/ext/afform/core/Civi/Api4/Action/Afform/AbstractProcessor.php(44): Civi\Api4\Action\Afform\Submit->processForm()
#7 /home/seamus/buildkit/build/47-test/web/sites/all/modules/civicrm/Civi/Api4/Provider/ActionObjectProvider.php(68): Civi\Api4\Action\Afform\AbstractProcessor->_run(Object(Civi\Api4\Generic\Result))
#8 /home/seamus/buildkit/build/47-test/web/sites/all/modules/civicrm/Civi/API/Kernel.php(149): Civi\Api4\Provider\ActionObjectProvider->invoke(Object(Civi\Api4\Action\Afform\Submit))
#9 /home/seamus/buildkit/build/47-test/web/sites/all/modules/civicrm/Civi/Api4/Generic/AbstractAction.php(239): Civi\API\Kernel->runRequest(Object(Civi\Api4\Action\Afform\Submit))
#10 /home/seamus/buildkit/build/47-test/web/sites/all/modules/civicrm/api/api.php(85): Civi\Api4\Generic\AbstractAction->execute()
#11 /home/seamus/buildkit/build/47-test/web/sites/all/modules/civicrm/CRM/Api4/Page/AJAX.php(139): civicrm_api4("Afform", "submit", (Array:4), NULL)
#12 /home/seamus/buildkit/build/47-test/web/sites/all/modules/civicrm/CRM/Api4/Page/AJAX.php(80): CRM_Api4_Page_AJAX->execute("Afform", "submit", (Array:4), NULL)
#13 /home/seamus/buildkit/build/47-test/web/sites/all/modules/civicrm/CRM/Core/Invoke.php(313): CRM_Api4_Page_AJAX->run((Array:5), NULL)
#14 /home/seamus/buildkit/build/47-test/web/sites/all/modules/civicrm/CRM/Core/Invoke.php(69): CRM_Core_Invoke::runItem((Array:12))
#15 /home/seamus/buildkit/build/47-test/web/sites/all/modules/civicrm/CRM/Core/Invoke.php(36): CRM_Core_Invoke::_invoke((Array:5))
#16 /home/seamus/buildkit/build/47-test/web/sites/all/modules/civicrm/drupal/civicrm.module(458): CRM_Core_Invoke::invoke((Array:5))
#17 /home/seamus/buildkit/build/47-test/web/includes/menu.inc(527): civicrm_invoke("ajax", "api4", "Afform", "submit")
#18 /home/seamus/buildkit/build/47-test/web/index.php(21): menu_execute_active_handler()
#19 {main}
)
May 06 17:31:21 [debug] AJAX Error ({error_id}): failed with exception
Array
(
[error_id] => g6Pr-4qZq-aCoC
[exception] => Civi\API\Exception\UnauthorizedException: "Cannot process APIv4 request for Organization1 (Website.replace): Action is not approved"
#0 /home/seamus/buildkit/build/47-test/web/sites/all/modules/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Submit.php(89): Civi\Afform\FormDataModel->Civi\Afform\{closure}("Website", "replace", (Array:3))
#1 /home/seamus/buildkit/build/47-test/web/sites/all/modules/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Submit.php(57): Civi\Api4\Action\Afform\Submit::saveJoins(Object(Closure), "Contact", "209", (Array:1))
#2 /home/seamus/buildkit/build/47-test/web/sites/all/modules/civicrm/vendor/symfony/event-dispatcher/EventDispatcher.php(214): Civi\Api4\Action\Afform\Submit::processContacts(Object(Civi\Afform\Event\AfformSubmitEvent), "civi.afform.submit", Object(Civi\Core\CiviEventDispatcher))
#3 /home/seamus/buildkit/build/47-test/web/sites/all/modules/civicrm/vendor/symfony/event-dispatcher/EventDispatcher.php(44): Symfony\Component\EventDispatcher\EventDispatcher->doDispatch((Array:2), "civi.afform.submit", Object(Civi\Afform\Event\AfformSubmitEvent))
#4 /home/seamus/buildkit/build/47-test/web/sites/all/modules/civicrm/Civi/Core/CiviEventDispatcher.php(129): Symfony\Component\EventDispatcher\EventDispatcher->dispatch("civi.afform.submit", Object(Civi\Afform\Event\AfformSubmitEvent))
#5 /home/seamus/buildkit/build/47-test/web/sites/all/modules/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Submit.php(36): Civi\Core\CiviEventDispatcher->dispatch("civi.afform.submit", Object(Civi\Afform\Event\AfformSubmitEvent))
#6 /home/seamus/buildkit/build/47-test/web/sites/all/modules/civicrm/ext/afform/core/Civi/Api4/Action/Afform/AbstractProcessor.php(44): Civi\Api4\Action\Afform\Submit->processForm()
#7 /home/seamus/buildkit/build/47-test/web/sites/all/modules/civicrm/Civi/Api4/Provider/ActionObjectProvider.php(68): Civi\Api4\Action\Afform\AbstractProcessor->_run(Object(Civi\Api4\Generic\Result))
#8 /home/seamus/buildkit/build/47-test/web/sites/all/modules/civicrm/Civi/API/Kernel.php(149): Civi\Api4\Provider\ActionObjectProvider->invoke(Object(Civi\Api4\Action\Afform\Submit))
#9 /home/seamus/buildkit/build/47-test/web/sites/all/modules/civicrm/Civi/Api4/Generic/AbstractAction.php(239): Civi\API\Kernel->runRequest(Object(Civi\Api4\Action\Afform\Submit))
#10 /home/seamus/buildkit/build/47-test/web/sites/all/modules/civicrm/api/api.php(85): Civi\Api4\Generic\AbstractAction->execute()
#11 /home/seamus/buildkit/build/47-test/web/sites/all/modules/civicrm/CRM/Api4/Page/AJAX.php(139): civicrm_api4("Afform", "submit", (Array:4), NULL)
#12 /home/seamus/buildkit/build/47-test/web/sites/all/modules/civicrm/CRM/Api4/Page/AJAX.php(80): CRM_Api4_Page_AJAX->execute("Afform", "submit", (Array:4), NULL)
#13 /home/seamus/buildkit/build/47-test/web/sites/all/modules/civicrm/CRM/Core/Invoke.php(313): CRM_Api4_Page_AJAX->run((Array:5), NULL)
#14 /home/seamus/buildkit/build/47-test/web/sites/all/modules/civicrm/CRM/Core/Invoke.php(69): CRM_Core_Invoke::runItem((Array:12))
#15 /home/seamus/buildkit/build/47-test/web/sites/all/modules/civicrm/CRM/Core/Invoke.php(36): CRM_Core_Invoke::_invoke((Array:5))
#16 /home/seamus/buildkit/build/47-test/web/sites/all/modules/civicrm/drupal/civicrm.module(458): CRM_Core_Invoke::invoke((Array:5))
#17 /home/seamus/buildkit/build/47-test/web/includes/menu.inc(527): civicrm_invoke("ajax", "api4", "Afform", "submit")
#18 /home/seamus/buildkit/build/47-test/web/index.php(21): menu_execute_active_handler()
#19 {main}