From d02bdcd38e27e0fcb54011569463b3f9266321b7 Mon Sep 17 00:00:00 2001 From: Tim Otten Date: Fri, 23 Jun 2023 22:48:35 -0700 Subject: [PATCH] standaloneusers - Enforce "Standalone" pre-req without modifying global state --- .../CRM/Standaloneusers/Upgrader.php | 24 +++++++++++++------ 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/ext/standaloneusers/CRM/Standaloneusers/Upgrader.php b/ext/standaloneusers/CRM/Standaloneusers/Upgrader.php index 6677403458..57ac7d307d 100644 --- a/ext/standaloneusers/CRM/Standaloneusers/Upgrader.php +++ b/ext/standaloneusers/CRM/Standaloneusers/Upgrader.php @@ -9,6 +9,23 @@ class CRM_Standaloneusers_Upgrader extends CRM_Extension_Upgrader_Base { // By convention, functions that look like "function upgrade_NNNN()" are // upgrade tasks. They are executed in order (like Drupal's hook_update_N). + /** + * Ensure that we're installing on suitable environment. + * + * @return void + * @throws \CRM_Core_Exception + */ + public function onInstall() { + $config = \CRM_Core_Config::singleton(); + if (!($config->userPermissionClass instanceof \CRM_Core_Permission_Standalone)) { + throw new \CRM_Core_Exception("standaloneusers can only be installed on standalone"); + } + if (!($config->userSystem instanceof \CRM_Utils_System_Standalone)) { + throw new \CRM_Core_Exception("standaloneusers can only be installed on standalone"); + } + parent::onInstall(); + } + /** * Example: Run an external SQL script when the module is installed. * @@ -42,11 +59,6 @@ class CRM_Standaloneusers_Upgrader extends CRM_Extension_Upgrader_Base { $dummyEmail = 'admin@localhost.localdomain'; // Create user - $config = \CRM_Core_Config::singleton(); - $originalUFPermission = $config->userPermissionClass; - $originalUF = $config->userSystem; - $config->userPermissionClass = new \CRM_Core_Permission_Standalone(); - $config->userSystem = new \CRM_Utils_System_Standalone(); $password = substr(base64_encode(random_bytes(8)), 0, 12); $params = [ 'cms_name' => 'admin', @@ -56,8 +68,6 @@ class CRM_Standaloneusers_Upgrader extends CRM_Extension_Upgrader_Base { 'contactID' => $contactID, ]; $userID = \CRM_Core_BAO_CMSUser::create($params, $dummyEmail); - $config->userPermissionClass = $originalUFPermission; - $config->userSystem = $originalUF; // Create Role $roleID = \Civi\Api4\Role::create(FALSE)->setValues(['name' => 'Administrator'])->execute()->first()['id']; -- 2.25.1