You are here

login_emailusername.module in Login Email or Username 7

Same filename and directory in other branches
  1. 8 login_emailusername.module

Allows users to login with their username or email address in the same input box.

File

login_emailusername.module
View source
<?php

/**
 * @file
 * Allows users to login with their username or email address in the same input box.
 */

/**
 * Implements hook_form_FORM_ID_alter().
 *
 * Alters the main user login form.
 */
function login_emailusername_form_user_login_alter(&$form, &$form_state, $form_id) {
  $form['name']['#title'] = t('Username or email address');
  $form['name']['#description'] = t('Enter your username or email address.');
  $form['name']['#element_validate'][] = 'login_emailusername_user_login_validate';
}

/**
 * Implements hook_form_FORM_ID_alter().
 *
 * Alters the user login block form.
 */
function login_emailusername_form_user_login_block_alter(&$form, &$form_state, $form_id) {
  $form['name']['#title'] = t('Username or email');
  $form['name']['#element_validate'][] = 'login_emailusername_user_login_validate';
}

/**
 * Form element validation handler for the user login form.
 *
 * Allows users to authenticate by username OR email.
 */
function login_emailusername_user_login_validate($form, &$form_state) {
  $name_input = $form_state['values']['name'];

  // Try loading by email.
  if ($user = user_load_by_mail($name_input)) {

    // Set the username for further validation.
    $form_state['values']['name'] = $user->name;
    return TRUE;
  }

  // Try loading by username.
  if ($user = user_load_by_name($name_input)) {
    return TRUE;
  }
  return FALSE;
}