You are here

mail_login.module in Mail Login 8

Same filename and directory in other branches
  1. 8.2 mail_login.module

Mail Login: This module enables users to login by email address.

File

mail_login.module
View source
<?php

/**
 * @file
 * Mail Login: This module enables users to login by email address.
 */
use Drupal\Core\Form\FormStateInterface;

/**
 * Implements hook_form_alter().
 */
function mail_login_form_alter(array &$form, FormStateInterface $form_state, $form_id) {
  switch ($form_id) {
    case 'user_login_form':

      // Load module configurations.
      $config_factory = \Drupal::configFactory();
      $config = $config_factory
        ->get('mail_login.settings');

      // Check for settings to enable login by email address.
      if ($config
        ->get('mail_login_enabled')) {

        // Add our custom validation for login form.
        array_unshift($form['#validate'], 'mail_login_extra_validate');
      }

      // Check for settings to override login form username
      // title and description.
      if ($config
        ->get('mail_login_override_login_labels')) {
        $form['name']['#title'] = t($config
          ->get('mail_login_username_title'));
        $form['name']['#description'] = t($config
          ->get('mail_login_username_description'));
      }
      break;
  }
}

/**
 * Custom validate function to enable email address login.
 */
function mail_login_extra_validate($form, FormStateInterface &$form_state) {
  $login_input = $form_state
    ->getValue('name');
  if (filter_var($login_input, FILTER_VALIDATE_EMAIL)) {
    $user = user_load_by_mail($login_input);
    if ($user) {
      $form_state
        ->setValue('name', $user
        ->getAccountName());
    }
  }
}

Functions

Namesort descending Description
mail_login_extra_validate Custom validate function to enable email address login.
mail_login_form_alter Implements hook_form_alter().