Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 5 |
CRAP | |
0.00% |
0 / 76 |
RegisterForm | |
0.00% |
0 / 1 |
|
0.00% |
0 / 5 |
462 | |
0.00% |
0 / 76 |
__construct | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 2 |
|||
form | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 17 |
|||
actions | |
0.00% |
0 / 1 |
2 | |
0.00% |
0 / 4 |
|||
submitForm | |
0.00% |
0 / 1 |
12 | |
0.00% |
0 / 12 |
|||
save | |
0.00% |
0 / 1 |
182 | |
0.00% |
0 / 41 |
<?php | |
/** | |
* @file | |
* Contains \Drupal\user\RegisterForm. | |
*/ | |
namespace Drupal\user; | |
use Drupal\Core\Entity\EntityManagerInterface; | |
use Drupal\Core\Entity\Query\QueryFactory; | |
use Drupal\Core\Form\FormStateInterface; | |
use Drupal\Core\Language\LanguageManagerInterface; | |
/** | |
* Form controller for the user register forms. | |
*/ | |
class RegisterForm extends AccountForm { | |
/** | |
* {@inheritdoc} | |
*/ | |
public function __construct(EntityManagerInterface $entity_manager, LanguageManagerInterface $language_manager, QueryFactory $entity_query) { | |
parent::__construct($entity_manager, $language_manager, $entity_query); | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function form(array $form, FormStateInterface $form_state) { | |
$user = $this->currentUser(); | |
/** @var \Drupal\user\UserInterface $account */ | |
$account = $this->entity; | |
$admin = $user->hasPermission('administer users'); | |
// Pass access information to the submit handler. Running an access check | |
// inside the submit function interferes with form processing and breaks | |
// hook_form_alter(). | |
$form['administer_users'] = array( | |
'#type' => 'value', | |
'#value' => $admin, | |
); | |
$form['#attached']['library'][] = 'core/drupal.form'; | |
// For non-admin users, populate the form fields using data from the | |
// browser. | |
if (!$admin) { | |
$form['#attributes']['data-user-info-from-browser'] = TRUE; | |
} | |
// Because the user status has security implications, users are blocked by | |
// default when created programmatically and need to be actively activated | |
// if needed. When administrators create users from the user interface, | |
// however, we assume that they should be created as activated by default. | |
if ($admin) { | |
$account->activate(); | |
} | |
// Start with the default user account fields. | |
$form = parent::form($form, $form_state, $account); | |
return $form; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
protected function actions(array $form, FormStateInterface $form_state) { | |
$element = parent::actions($form, $form_state); | |
$element['submit']['#value'] = $this->t('Create new account'); | |
return $element; | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function submitForm(array &$form, FormStateInterface $form_state) { | |
$admin = $form_state->getValue('administer_users'); | |
if (!\Drupal::config('user.settings')->get('verify_mail') || $admin) { | |
$pass = $form_state->getValue('pass'); | |
} | |
else { | |
$pass = user_password(); | |
} | |
// Remove unneeded values. | |
$form_state->cleanValues(); | |
$form_state->setValue('pass', $pass); | |
$form_state->setValue('init', $form_state->getValue('mail')); | |
parent::submitForm($form, $form_state); | |
} | |
/** | |
* {@inheritdoc} | |
*/ | |
public function save(array $form, FormStateInterface $form_state) { | |
$account = $this->entity; | |
$pass = $account->getPassword(); | |
$admin = $form_state->getValue('administer_users'); | |
$notify = !$form_state->isValueEmpty('notify'); | |
// Save has no return value so this cannot be tested. | |
// Assume save has gone through correctly. | |
$account->save(); | |
$form_state->set('user', $account); | |
$form_state->setValue('uid', $account->id()); | |
$this->logger('user')->notice('New user: %name %email.', array('%name' => $form_state->getValue('name'), '%email' => '<' . $form_state->getValue('mail') . '>', 'type' => $account->link($this->t('Edit'), 'edit-form'))); | |
// Add plain text password into user account to generate mail tokens. | |
$account->password = $pass; | |
// New administrative account without notification. | |
if ($admin && !$notify) { | |
drupal_set_message($this->t('Created a new user account for <a href=":url">%name</a>. No email has been sent.', array(':url' => $account->url(), '%name' => $account->getUsername()))); | |
} | |
// No email verification required; log in user immediately. | |
elseif (!$admin && !\Drupal::config('user.settings')->get('verify_mail') && $account->isActive()) { | |
_user_mail_notify('register_no_approval_required', $account); | |
user_login_finalize($account); | |
drupal_set_message($this->t('Registration successful. You are now logged in.')); | |
$form_state->setRedirect('<front>'); | |
} | |
// No administrator approval required. | |
elseif ($account->isActive() || $notify) { | |
if (!$account->getEmail() && $notify) { | |
drupal_set_message($this->t('The new user <a href=":url">%name</a> was created without an email address, so no welcome message was sent.', array(':url' => $account->url(), '%name' => $account->getUsername()))); | |
} | |
else { | |
$op = $notify ? 'register_admin_created' : 'register_no_approval_required'; | |
if (_user_mail_notify($op, $account)) { | |
if ($notify) { | |
drupal_set_message($this->t('A welcome message with further instructions has been emailed to the new user <a href=":url">%name</a>.', array(':url' => $account->url(), '%name' => $account->getUsername()))); | |
} | |
else { | |
drupal_set_message($this->t('A welcome message with further instructions has been sent to your email address.')); | |
$form_state->setRedirect('<front>'); | |
} | |
} | |
} | |
} | |
// Administrator approval required. | |
else { | |
_user_mail_notify('register_pending_approval', $account); | |
drupal_set_message($this->t('Thank you for applying for an account. Your account is currently pending approval by the site administrator.<br />In the meantime, a welcome message with further instructions has been sent to your email address.')); | |
$form_state->setRedirect('<front>'); | |
} | |
} | |
} |