rpt.module in Registration Password Token 8
Same filename and directory in other branches
Registration Password Token module.
File
rpt.moduleView source
<?php
/**
* @file
* Registration Password Token module.
*/
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Render\BubbleableMetadata;
/**
* Implements hook_form_FORM_ID_alter().
*/
function rpt_form_user_admin_settings_alter(&$form, FormStateInterface $form_state) {
$settings = \Drupal::config('rpt.settings');
// Add checkbox with setting of password automatic generation.
$form['registration_cancellation']['rpt_password_generate'] = [
'#type' => 'checkbox',
'#title' => t('Generate password automatically'),
'#description' => t('Hide password fields on user register form.'),
'#default_value' => $settings
->get('password_generate'),
'#weight' => 0,
];
$form['registration_cancellation']['rpt_password_length'] = [
'#type' => 'textfield',
'#title' => t('Password length'),
'#description' => t('Length for generated password.'),
'#default_value' => $settings
->get('password_length'),
'#weight' => 1,
];
// Add submit handler to save rpt configuration.
$form['#submit'][] = 'rpt_user_admin_settings_submit';
}
/**
* Form submission handler for 'user_admin_settings' form.
*
* @see rpt_form_user_admin_settings_alter()
*/
function rpt_user_admin_settings_submit($form, FormStateInterface $form_state) {
\Drupal::configFactory()
->getEditable('rpt.settings')
->set('password_generate', $form_state
->getValue('rpt_password_generate'))
->set('password_length', $form_state
->getValue('rpt_password_length'))
->save();
}
/**
* Implements hook_form_FORM_ID_alter().
*/
function rpt_form_user_register_form_alter(&$form, FormStateInterface $form_state) {
$settings = \Drupal::config('rpt.settings');
// Hide password field and generate password for user.
$generate_password = $settings
->get('password_generate');
if ($generate_password) {
$form['account']['pass']['#type'] = 'value';
$password_length = $settings
->get('password_length');
$form['account']['pass']['#value'] = user_password($password_length);
}
}
/**
* Implements hook_form_FORM_ID_alter().
*/
function rpt_form_user_form_alter(&$form, FormStateInterface $form_state) {
array_unshift($form['#submit'], 'rpt_user_form_submit');
}
/**
* Submit handler for 'user_form' form.
*
* @see: rpt_form_user_form_alter()
*/
function rpt_user_form_submit($form, FormStateInterface $form_state) {
$pass = $form_state
->getValue('pass');
if ($pass) {
$account = $form_state
->getFormObject()
->getEntity();
$account->password = $pass;
}
}
/**
* Implements hook_token_info().
*/
function rpt_token_info() {
$info['tokens']['user']['password'] = [
'name' => t('User password'),
'description' => t('Provides user password. May be used only during registration.'),
];
return $info;
}
/**
* Implements hook_tokens().
*/
function rpt_tokens($type, $tokens, array $data, array $options, BubbleableMetadata $bubbleable_metadata) {
$replacements = [];
foreach ($tokens as $name => $value) {
if ($name === 'password' && isset($data['user'])) {
if (isset($data['user']->password)) {
$replacements['[user:password]'] = $data['user']->password;
$replacements['[account:password]'] = $data['user']->password;
}
else {
$replacements['[user:password]'] = t('Your password');
$replacements['[account:password]'] = t('Your password');
}
}
}
return $replacements;
}
Functions
Name | Description |
---|---|
rpt_form_user_admin_settings_alter | Implements hook_form_FORM_ID_alter(). |
rpt_form_user_form_alter | Implements hook_form_FORM_ID_alter(). |
rpt_form_user_register_form_alter | Implements hook_form_FORM_ID_alter(). |
rpt_tokens | Implements hook_tokens(). |
rpt_token_info | Implements hook_token_info(). |
rpt_user_admin_settings_submit | Form submission handler for 'user_admin_settings' form. |
rpt_user_form_submit | Submit handler for 'user_form' form. |