Anonymous visitors cannot access a contribution page with financial type by ACL enabled
On a vanilla WP 6.4.3 and CiviCRM 5.70 dummy site, enabling Enable Access Control by Financial Type
results in the contribution page being inaccessible and redirects back to the home page.
The goal of using this feature is for back-end contribution access for different types of users.
-
add_contributions_of_type_donation
andview_contributions_of_type_donation
permissions are given to theanonymous_user
role. - I've hit this before but that was when these permissions were missing and I updated the docs to reflect this requirement.
- Event Registration pages work without issue when the financial types are properly granted to the anonymous_user
add_contributions_of_type_event_fee
andview_contributions_of_type_event_fee
- I've reproduced this issue back to at least Civi 5.68. Last worked on 5.65.1. I'm sure others use this feature so odd I'm reporting but there you go.
Anonymous User Permissions
- access_all_custom_data
- access_civimail_subscribe_unsubscribe_pages
- access_uploaded_files
- add_contributions_of_type_donation
- add_contributions_of_type_event_fee
- add_contributions_of_type_member_dues
- make_online_contributions
- profile_create
- profile_edit
- profile_view
- register_for_events
- sign_civicrm_petition
- view_contributions_of_type_donation
- view_contributions_of_type_event_fee
- view_contributions_of_type_member_dues
- view_event_info
- view_my_invoices
- view_public_civimail_content
Backtrace error:
2024-02-09 19:16:28+0000 [debug] $API Request Authorization failed = #0 /home/user/example.org/wp-content/plugins/civicrm/civicrm/Civi/API/Kernel.php(151): CRM_Core_Error::backtrace("API Request Authorization failed", TRUE)
#1 /home/user/example.org/wp-content/plugins/civicrm/civicrm/Civi/Api4/Generic/AbstractAction.php(256): Civi\API\Kernel->runRequest(Object(Civi\Api4\Generic\DAOGetAction))
#2 /home/user/example.org/wp-content/plugins/civicrm/civicrm/CRM/Financial/BAO/FinancialType.php(181): Civi\Api4\Generic\AbstractAction->execute()
#3 /home/user/example.org/wp-content/plugins/civicrm/civicrm/CRM/Contribute/BAO/ContributionPage.php(822): CRM_Financial_BAO_FinancialType::getIncomeFinancialType(TRUE)
#4 /home/user/example.org/wp-content/plugins/civicrm/civicrm/Civi/Api4/Utils/FormattingUtil.php(306): CRM_Contribute_BAO_ContributionPage::buildOptions("financial_type_id", "validate", (Array:2))
#5 /home/user/example.org/wp-content/plugins/civicrm/civicrm/Civi/Api4/Utils/FormattingUtil.php(257): Civi\Api4\Utils\FormattingUtil::getPseudoconstantList((Array:37), "financial_type_id:name", (Array:2), "get")
#6 /home/user/example.org/wp-content/plugins/civicrm/civicrm/Civi/Api4/Query/Api4SelectQuery.php(108): Civi\Api4\Utils\FormattingUtil::formatOutputValues((Array:2), (Array:48), "get", (Array:2))
#7 /home/user/example.org/wp-content/plugins/civicrm/civicrm/Civi/Api4/Generic/DAOGetAction.php(107): Civi\Api4\Query\Api4SelectQuery->run()
#8 /home/user/example.org/wp-content/plugins/civicrm/civicrm/Civi/Api4/Generic/DAOGetAction.php(94): Civi\Api4\Generic\DAOGetAction->getObjects(Object(Civi\Api4\Generic\Result))
#9 /home/user/example.org/wp-content/plugins/civicrm/civicrm/Civi/Api4/Provider/ActionObjectProvider.php(72): Civi\Api4\Generic\DAOGetAction->_run(Object(Civi\Api4\Generic\Result))
#10 /home/user/example.org/wp-content/plugins/civicrm/civicrm/Civi/API/Kernel.php(156): Civi\Api4\Provider\ActionObjectProvider->invoke(Object(Civi\Api4\Generic\DAOGetAction))
#11 /home/user/example.org/wp-content/plugins/civicrm/civicrm/Civi/Api4/Generic/AbstractAction.php(256): Civi\API\Kernel->runRequest(Object(Civi\Api4\Generic\DAOGetAction))
#12 /home/user/example.org/wp-content/plugins/civicrm/civicrm/api/api.php(91): Civi\Api4\Generic\AbstractAction->execute()
#13 /home/user/example.org/wp-content/plugins/civicrm/civicrm/Civi/API/EntityLookupTrait.php(111): civicrm_api4("ContributionPage", "get", (Array:3))
#14 /home/user/example.org/wp-content/plugins/civicrm/civicrm/CRM/Contribute/Form/ContributeFormTrait.php(81): CRM_Contribute_Form_ContributionBase->lookup("ContributionPage", "financial_type_id:name")
#15 /home/user/example.org/wp-content/plugins/civicrm/civicrm/ext/financialacls/financialacls.php(431): CRM_Contribute_Form_ContributionBase->getContributionPageValue("financial_type_id:name")
#16 /home/user/example.org/wp-content/plugins/civicrm/civicrm/CRM/Utils/Hook.php(276): financialacls_civicrm_preProcess("CRM_Contribute_Form_Contribution_Main", Object(CRM_Contribute_Form_Contribution_Main))
#17 /home/user/example.org/wp-content/plugins/civicrm/civicrm/CRM/Utils/Hook/WordPress.php(136): CRM_Utils_Hook->runHooks((Array:16), "civicrm_preProcess", 2, "CRM_Contribute_Form_Contribution_Main", Object(CRM_Contribute_Form_Contribution_Main), NULL, NULL, NULL, NULL)
#18 /home/user/example.org/wp-content/plugins/civicrm/civicrm/Civi/Core/CiviEventDispatcher.php(314): CRM_Utils_Hook_WordPress->invokeViaUF(2, "CRM_Contribute_Form_Contribution_Main", Object(CRM_Contribute_Form_Contribution_Main), NULL, NULL, NULL, NULL, "civicrm_preProcess")
#19 /home/user/example.org/wp-content/plugins/civicrm/civicrm/vendor/symfony/event-dispatcher/EventDispatcher.php(251): Civi\Core\CiviEventDispatcher::delegateToUF(Object(Civi\Core\Event\GenericHookEvent), "hook_civicrm_preProcess", Object(Civi\Core\UnoptimizedEventDispatcher))
#20 /home/user/example.org/wp-content/plugins/civicrm/civicrm/vendor/symfony/event-dispatcher/EventDispatcher.php(73): Symfony\Component\EventDispatcher\EventDispatcher->callListeners((Array:1), "hook_civicrm_preProcess", Object(Civi\Core\Event\GenericHookEvent))
#21 /home/user/example.org/wp-content/plugins/civicrm/civicrm/Civi/Core/CiviEventDispatcher.php(263): Symfony\Component\EventDispatcher\EventDispatcher->dispatch(Object(Civi\Core\Event\GenericHookEvent), "hook_civicrm_preProcess")
#22 /home/user/example.org/wp-content/plugins/civicrm/civicrm/CRM/Utils/Hook.php(168): Civi\Core\CiviEventDispatcher->dispatch("hook_civicrm_preProcess", Object(Civi\Core\Event\GenericHookEvent))
#23 /home/user/example.org/wp-content/plugins/civicrm/civicrm/CRM/Utils/Hook.php(476): CRM_Utils_Hook->invoke((Array:2), "CRM_Contribute_Form_Contribution_Main", Object(CRM_Contribute_Form_Contribution_Main), NULL, NULL, NULL, NULL, "civicrm_preProcess")
#24 /home/user/example.org/wp-content/plugins/civicrm/civicrm/CRM/Core/Form.php(733): CRM_Utils_Hook::preProcess("CRM_Contribute_Form_Contribution_Main", Object(CRM_Contribute_Form_Contribution_Main))
#25 /home/user/example.org/wp-content/plugins/civicrm/civicrm/CRM/Core/QuickForm/Action/Display.php(76): CRM_Core_Form->buildForm()
#26 /home/user/example.org/wp-content/plugins/civicrm/civicrm/packages/HTML/QuickForm/Controller.php(203): CRM_Core_QuickForm_Action_Display->perform(Object(CRM_Contribute_Form_Contribution_Main), "display")
#27 /home/user/example.org/wp-content/plugins/civicrm/civicrm/packages/HTML/QuickForm/Page.php(103): HTML_QuickForm_Controller->handle(Object(CRM_Contribute_Form_Contribution_Main), "display")
#28 /home/user/example.org/wp-content/plugins/civicrm/civicrm/CRM/Core/Controller.php(355): HTML_QuickForm_Page->handle("display")
#29 /home/user/example.org/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php(322): CRM_Core_Controller->run((Array:3), NULL)
#30 /home/user/example.org/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php(69): CRM_Core_Invoke::runItem((Array:18))
#31 /home/user/example.org/wp-content/plugins/civicrm/civicrm/CRM/Core/Invoke.php(36): CRM_Core_Invoke::_invoke((Array:3))
#32 /home/user/example.org/wp-content/plugins/civicrm/civicrm.php(1231): CRM_Core_Invoke::invoke((Array:3))
#33 /home/user/example.org/wp-content/plugins/civicrm/includes/civicrm.shortcodes.php(433): CiviCRM_For_WordPress->invoke()
#34 /home/user/example.org/wp-includes/shortcodes.php(433): CiviCRM_For_WordPress_Shortcodes->render_single((Array:5), "", "civicrm")
#35 [internal function](): do_shortcode_tag((Array:7))
#36 /home/user/example.org/wp-includes/shortcodes.php(273): preg_replace_callback("/\[(\[?)(civicrm)(?![\w-])([^\]\/]*(?:\/(?!\])[^\]\/]*)*?)(?:(\/)\]|\](?:([^\...", "do_shortcode_tag", "[civicrm component=\"contribution\" id=\"1\" action=\"transact\" mode=\"live\...")
#37 /home/user/example.org/wp-content/plugins/civicrm/includes/civicrm.shortcodes.php(232): do_shortcode("[civicrm component=\"contribution\" id=\"1\" action=\"transact\" mode=\"live\...")
#38 /home/user/example.org/wp-includes/class-wp-hook.php(324): CiviCRM_For_WordPress_Shortcodes->prerender(Object(WP))
#39 /home/user/example.org/wp-includes/class-wp-hook.php(348): WP_Hook->apply_filters(NULL, (Array:1))
#40 /home/user/example.org/wp-includes/plugin.php(565): WP_Hook->do_action((Array:1))
#41 /home/user/example.org/wp-includes/class-wp.php(830): do_action_ref_array("wp", (Array:1))
#42 /home/user/example.org/wp-includes/functions.php(1336): WP->main("")
#43 /home/user/example.org/wp-blog-header.php(16): wp()
#44 /home/user/example.org/index.php(17): require("/home/user/example.org/wp-blog-header.php")
#45 {main}
System Info
PHP version 8.0.30
Extensions
- AuthX: Version 5.70.0
- CiviCampaign: Version 5.70.0
- CiviContribute: Version 5.70.0
- CiviEvent: Version 5.70.0
- CiviMail: Version 5.70.0
- CiviMember: Version 5.70.0
- CiviReport: Version 5.70.0
- CKEditor4: Version 5.70.0
- Financial ACLs: Version 5.70.0
- FlexMailer: Version 5.70.0
- Form Core: Version 5.70.0
- reCAPTCHA: Version 5.70.0
- SearchKit: Version 5.70.0
- Sequential credit notes: Version 5.70.0
- Theme: Greenwich: Version 5.70.0
Thoughts? Is there a missing setting or is this an actual bug?