You are here

function security_questions_form_user_pass_alter in Security Questions 7

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.2 security_questions.module \security_questions_form_user_pass_alter()

Implements hook_form_FORM_ID_alter() for user_pass().

File

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

Code

function security_questions_form_user_pass_alter(&$form, &$form_state, $form_id = 'user_pass') {
  $pass_reset = variable_get('security_questions_password_reset');
  if ($pass_reset) {
    if (empty($form_state['security_questions']['account'])) {
      unset($form['#submit']);
      $form['#validate'][] = 'security_questions_pass_reset_validate_account';
    }
    else {
      $form['name']['#type'] = 'hidden';
      $form['name']['#value'] = $form_state['values']['name'];

      // Retrieve account from form_state (put there by our validation function).
      $account = $form_state['security_questions']['account'];

      // Get a random question for this user.
      $question = security_questions_get_random_question($account);

      // If there is no question, hide the security question fields.
      // Can happen if module is implemented after users are already registered.
      // We will account for this after login.
      if ($question) {

        // Store question id for answer lookup during validation.
        $_SESSION['security_question'] = $question->security_question_id;

        // Show answer element.
        $form['security_question'] = array(
          '#type' => 'fieldset',
          '#title' => t('Security Question'),
          '#weight' => -2,
        );
        $form['security_question']['question'] = array(
          '#markup' => '<div>' . t(check_plain($question->security_question)) . '</div>',
        );
        $form['security_question']['security_answer'] = array(
          '#type' => 'textfield',
          '#title' => t('Answer'),
          '#required' => TRUE,
        );

        // Add our validation handler.
        $form['#validate'] = array(
          'security_questions_pass_reset_validate_answer',
        );
      }
    }
  }
}