super_login.module in Super Login 8
Same filename and directory in other branches
Functions related to altering of login form.
File
super_login.moduleView source
<?php
/**
* @file
* Functions related to altering of login form.
*/
use Drupal\Core\Url;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Link;
/**
* Implements hook_form_alter().
*
* Adjusts form on login page.
*/
function super_login_form_alter(&$form, FormStateInterface $form_state, $form_id) {
if ($form_id == 'user_register_form' && \Drupal::currentUser()
->isAnonymous()) {
$config = \Drupal::config('super_login.settings');
$form['account']['mail']['#attributes']['autofocus'] = 'autofocus';
unset($form['account']['mail']['#description']);
unset($form['account']['name']['#description']);
$internal_link = Link::createFromRoute(t($config
->get('super_login.back_link')), 'user.login')
->toString();
$form['reset'] = [
'#markup' => '<p class="back-to-login">' . $internal_link . '</p>',
'#weight' => 100,
];
}
if ($form_id == 'user_login_form' || $form_id == 'user_pass') {
$config = \Drupal::config('super_login.settings');
// Global form functions.
if ($config
->get('super_login.autofocus') == TRUE) {
$form['name']['#attributes']['autofocus'] = 'autofocus';
}
unset($form['name']['#description']);
unset($form['pass']['#description']);
if ($config
->get('super_login.css') == TRUE) {
$form['#attached']['library'][] = 'super_login/super_login_css';
if ($config
->get('super_login.button_theme') == 1) {
$form['#attached']['library'][] = 'super_login/super_login_buttons';
}
}
}
if ($form_id == 'user_login_form') {
$form['#attached']['library'][] = 'super_login/super_login_js';
$form['#attached']['drupalSettings']['show_messages'] = $config
->get('super_login.messages');
$form['title'] = [
'#markup' => '<p class="login-title">' . t($config
->get('super_login.login_title')) . '</p>',
'#weight' => -100,
];
$internal_link = Link::createFromRoute(t($config
->get('super_login.forgot_pw_text')), 'user.pass')
->toString();
$form['reset'] = [
'#markup' => '<p class="forgot-password">' . $internal_link . '</p>',
'#weight' => 1,
];
if ($config
->get('super_login.capslock')) {
$form['capslock'] = [
'#markup' => '<div id="capslockdiv"><p>' . t($config
->get('super_login.capslock_msg')) . '</p></div>',
'#weight' => 2,
];
}
$user_config = \Drupal::config('user.settings');
if ($user_config
->get('register') != \Drupal\user\UserInterface::REGISTER_ADMINISTRATORS_ONLY) {
$actions_suffix = '<div class="actions-suffix">';
$internal_link = Link::createFromRoute(t($config
->get('super_login.new_account_text')), 'user.register')
->toString();
$actions_suffix .= $internal_link;
$actions_suffix .= '</div>';
$form['actions']['#suffix'] = $actions_suffix;
}
$form['name']['#title'] = t($config
->get('super_login.login_text'));
$form['name']['#size'] = 50;
$form['pass']['#size'] = 50;
// Set form placeholders.
if ($config
->get('super_login.placeholder')) {
$placeholders = [
'name' => $config
->get('super_login.login_placeholder'),
'pass' => $config
->get('super_login.pass_placeholder'),
];
foreach ($placeholders as $field_name => $placeholder) {
if (empty($placeholder)) {
continue;
}
$form[$field_name]['#attributes']['title'] = $placeholder;
$form[$field_name]['#attributes']['placeholder'] = $placeholder;
}
}
if (!$config
->get('super_login.new_account_text')) {
$form['#attributes']['autocomplete'] = 'off';
$form['name']['#attributes']['autocomplete'] = 'off';
$form['pass']['#attributes']['autocomplete'] = 'off';
}
$form['#validate'] = is_array($form['#validate']) ? $form['#validate'] : [];
array_unshift($form['#validate'], 'super_login_user_login_validate');
}
if ($form_id == 'user_pass') {
$config = \Drupal::config('super_login.settings');
$form['#attached']['library'][] = 'super_login/super_login_pw_js';
$form['#attached']['drupalSettings']['show_messages'] = $config
->get('super_login.messages');
$form['title'] = [
'#markup' => '<p class="login-title">' . t($config
->get('super_login.password_reset_title')) . '</p>',
'#weight' => -100,
];
$internal_link = Link::createFromRoute(t($config
->get('super_login.back_link')), 'user.login')
->toString();
$form['reset'] = [
'#markup' => '<p class="back-to-login">' . $internal_link . '</p>',
'#weight' => 1,
];
}
}
/**
* Custom validation for user login form.
*/
function super_login_user_login_validate(&$form, FormStateInterface $form_state) {
$login_type = (int) \Drupal::config('super_login.settings')
->get('super_login.login_type');
$username = mb_strtolower(trim($form_state
->getValue('name')));
if (in_array($login_type, [
0,
2,
]) && !empty($username)) {
$user_storage = \Drupal::entityTypeManager()
->getStorage('user');
$user_ids = $user_storage
->getQuery()
->condition('mail', $username)
->condition('status', 1)
->range(0, 1)
->execute();
if (!empty($user_ids) && ($user = $user_storage
->load(reset($user_ids)))) {
$form_state
->setValue('name', $user
->getAccountName());
}
elseif ($login_type === 2) {
$form_state
->setValue('name', '-');
}
}
}
/**
* Implements hook_menu_local_tasks_alter().
*
* Removes tabs from login page.
*/
function super_login_menu_local_tasks_alter(&$data, $route_name) {
if ($route_name == 'user.login') {
unset($data['tabs'][0]['user.pass']);
unset($data['tabs'][0]['user.register']);
}
if ($route_name == 'user.pass') {
unset($data['tabs'][0]['user.pass']);
unset($data['tabs'][0]['user.register']);
unset($data['tabs'][0]['user.login']);
}
if ($route_name == 'user.register') {
unset($data['tabs'][0]['user.pass']);
unset($data['tabs'][0]['user.register']);
}
}
Functions
Name![]() |
Description |
---|---|
super_login_form_alter | Implements hook_form_alter(). |
super_login_menu_local_tasks_alter | Implements hook_menu_local_tasks_alter(). |
super_login_user_login_validate | Custom validation for user login form. |