diff --git a/Civi/Api4/Generic/AbstractAction.php b/Civi/Api4/Generic/AbstractAction.php index 8d0111e6b35dccafc9fda3949ca5ad8ec4b11a7a..fa995ce0d8d4acf2e7728940e85d1d824a928af6 100644 --- a/Civi/Api4/Generic/AbstractAction.php +++ b/Civi/Api4/Generic/AbstractAction.php @@ -407,13 +407,15 @@ abstract class AbstractAction implements \ArrayAccess { 'default' => ['administer CiviCRM'], ]; $action = $this->getActionName(); - if (isset($permissions[$action])) { - return $permissions[$action]; - } - elseif (in_array($action, ['getActions', 'getFields'])) { - return $permissions['meta']; - } - return $permissions['default']; + // Map specific action names to more generic versions + $map = [ + 'getActions' => 'meta', + 'getFields' => 'meta', + 'replace' => 'delete', + 'save' => 'create', + ]; + $generic = $map[$action] ?? 'default'; + return $permissions[$action] ?? $permissions[$generic] ?? $permissions['default']; } /**