From 454490fc42e9a46ad5c32f416aa2dd8e617fe6cb Mon Sep 17 00:00:00 2001 From: demeritcowboy Date: Tue, 21 Jul 2020 23:38:11 -0400 Subject: [PATCH] require email and errors not showing for create cms user task --- CRM/Contact/Form/Task/Useradd.php | 9 ++++- CRM/Utils/System/Drupal8.php | 3 ++ .../CRM/Contact/Form/Task/UseraddTest.php | 38 +++++++++++++++++++ 3 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 tests/phpunit/CRM/Contact/Form/Task/UseraddTest.php diff --git a/CRM/Contact/Form/Task/Useradd.php b/CRM/Contact/Form/Task/Useradd.php index b9a8056721..385405c6a2 100644 --- a/CRM/Contact/Form/Task/Useradd.php +++ b/CRM/Contact/Form/Task/Useradd.php @@ -73,6 +73,7 @@ class CRM_Contact_Form_Task_Useradd extends CRM_Core_Form { $this->addRule('cms_pass', 'Password is required', 'required'); $this->addRule(['cms_pass', 'cms_confirm_pass'], 'ERROR: Password mismatch', 'compare'); $this->add('text', 'email', ts('Email:'), ['class' => 'huge'])->freeze(); + $this->addRule('email', 'Email is required', 'required'); $this->add('hidden', 'contactID'); //add a rule to check username uniqueness @@ -101,8 +102,12 @@ class CRM_Contact_Form_Task_Useradd extends CRM_Core_Form { // store the submitted values in an array $params = $this->exportValues(); - CRM_Core_BAO_CMSUser::create($params, 'email'); - CRM_Core_Session::setStatus('', ts('User Added'), 'success'); + if (CRM_Core_BAO_CMSUser::create($params, 'email') === FALSE) { + CRM_Core_Error::statusBounce(ts('Error creating CMS user account.')); + } + else { + CRM_Core_Session::setStatus(ts('User Added'), '', 'success'); + } } /** diff --git a/CRM/Utils/System/Drupal8.php b/CRM/Utils/System/Drupal8.php index 53e2a67dea..78479501e3 100644 --- a/CRM/Utils/System/Drupal8.php +++ b/CRM/Utils/System/Drupal8.php @@ -56,6 +56,9 @@ class CRM_Utils_System_Drupal8 extends CRM_Utils_System_DrupalBase { // Validate the user object $violations = $account->validate(); if (count($violations)) { + foreach ($violations as $violation) { + CRM_Core_Session::setStatus($violation->getPropertyPath() . ': ' . $violation->getMessage(), '', 'alert'); + } return FALSE; } diff --git a/tests/phpunit/CRM/Contact/Form/Task/UseraddTest.php b/tests/phpunit/CRM/Contact/Form/Task/UseraddTest.php new file mode 100644 index 0000000000..714a228ebf --- /dev/null +++ b/tests/phpunit/CRM/Contact/Form/Task/UseraddTest.php @@ -0,0 +1,38 @@ +postProcess(); + } + catch (CRM_Core_Exception_PrematureExitException $e) { + } + $statuses = CRM_Core_Session::singleton()->getStatus(TRUE); + $this->assertEquals('alert', $statuses[0]['type']); + } + +} -- 2.25.1