diff --git a/CRM/Contact/Form/Task/Useradd.php b/CRM/Contact/Form/Task/Useradd.php index b9a805672163..385405c6a2e1 100644 --- a/CRM/Contact/Form/Task/Useradd.php +++ b/CRM/Contact/Form/Task/Useradd.php @@ -73,6 +73,7 @@ public function buildQuickForm() { $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 @@ public function postProcess() { // 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 53e2a67dea34..78479501e3ab 100644 --- a/CRM/Utils/System/Drupal8.php +++ b/CRM/Utils/System/Drupal8.php @@ -56,6 +56,9 @@ public function createUser(&$params, $mail) { // 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 000000000000..714a228ebf98 --- /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']); + } + +}