You are here

function super_login_form_alter in Super Login 8

Same name and namespace in other branches
  1. 7 super_login.module \super_login_form_alter()

Implements hook_form_alter().

Adjusts form on login page.

File

./super_login.module, line 17
Functions related to altering of login form.

Code

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,
    ];
  }
}