You are here

function security_questions_form_user_pass_alter in Security Questions 7.2

Same name and namespace in other branches
  1. 6.2 security_questions.module \security_questions_form_user_pass_alter()
  2. 6 security_questions.module \security_questions_form_user_pass_alter()
  3. 7 security_questions.module \security_questions_form_user_pass_alter()

Implements hook_form_FORM_ID_alter().

Adds a question challenge to the password reset form.

File

./security_questions.module, line 462
Main module file for security_questions.

Code

function security_questions_form_user_pass_alter(&$form, &$form_state, $form_id) {

  // Abort if the password form is not protected.
  if (!variable_get('security_questions_password_reset', FALSE)) {
    return;
  }
  global $user;

  // We need our own submission handler to make this a multistep form.
  $form['#submit'] = array(
    'security_questions_user_pass_submit',
  );

  // If the user is already logged in but not allowed to bypass, or our submit
  // handler triggered a rebuild, then we need to issue a challenge.
  $account = FALSE;
  if ($user->uid > 0 && !security_questions_bypass_challenge($user)) {
    $account = $user;
  }
  elseif (!empty($form_state['security_questions']['uid'])) {
    $account = user_load($form_state['security_questions']['uid']);
  }
  if ($account) {
    $form += security_questions_challenge($account);
    $form['#validate'][] = 'security_questions_user_pass_answer_validate';
    $form['name']['#type'] = 'value';
    $form['name']['#value'] = $account->mail;
  }
}