function ga_login_user_login_validate in Google Authenticator login 7
Same name and namespace in other branches
- 6 ga_login.module \ga_login_user_login_validate()
Validate callback for login form.
Checks if the ga_login code is needed and valid.
See also
ga_login_form_alter()
1 string reference to 'ga_login_user_login_validate'
- ga_login_form_user_login_alter in ./
ga_login.module - Implements hook_form_FORM_ID_alter().
File
- ./
ga_login.module, line 307 - Main ga_login module.
Code
function ga_login_user_login_validate($form, &$form_state) {
$code = $form_state['values']['gacode'];
if (!empty($form_state['uid']) && !form_get_errors()) {
// Authentication was successful, check the GA code.
$name = $form_state['values']['name'];
$account = user_load_by_name($name);
if (_ga_login_force_tfa($account) || !empty($code) || $account->uid == 1 && variable_get('ga_login_always_for_uid1', 0)) {
$ga = _ga_login_get_class();
$username = _ga_login_username($account);
if ($ga
->hasToken($username)) {
$keyok = $ga
->authenticateUser($username, $code);
if (!$keyok) {
$form_state['ga_code'] = GA_LOGIN_TOKEN_INVALID;
// Clear uid so that the login fails and a flood event is registered.
$form_state['uid'] = FALSE;
}
else {
$form_state['ga_code'] = GA_LOGIN_TOKEN_VALID;
}
}
else {
$form_state['ga_code'] = GA_LOGIN_TOKEN_MISSING;
if ($account->uid != 1 && user_access('require code', $account)) {
// A code is required but not provided.
form_set_error('gacode', t("Your code is required to log in."));
}
}
}
elseif ($account->uid != 1 && user_access('require code', $account)) {
// A code is required but not provided.
form_set_error('gacode', t("Your code is required to log in."));
}
}
if (!empty($code) && (!isset($form_state['ga_code']) || $form_state['ga_code'] == GA_LOGIN_TOKEN_INVALID)) {
form_set_error('gacode', t("Your code isn't valid or has already been used."));
}
}