function _tfa_form_get_destination in Two-factor Authentication (TFA) 7.2
Get destination and options for $form_state['redirect'].
Parameters
array $context: TFA account context.
array $form_state: Form API state array from tfa_form_submit().
object $account: User account.
Return value
array Array with the redirect destination, and options.
1 call to _tfa_form_get_destination()
- tfa_form_submit in ./
tfa.form.inc - TFA form submission handler.
File
- ./
tfa.form.inc, line 121 - Form-related functions.
Code
function _tfa_form_get_destination(array $context, array $form_state, $account) {
$options = array();
$destination = 'user';
if (!empty($_GET['pass-reset-token'])) {
// If pass-reset-token was set then complete final process interrupted
// from user_pass_reset().
watchdog('tfa', 'User %name used one-time login link', array(
'%name' => $account->name,
));
drupal_set_message(t('You have just used your one-time login link. It is no longer necessary to use this link to log in. Please change your password.'));
// Let the user's password be changed without the current password check.
$token = drupal_hash_base64(drupal_random_bytes(32));
$_SESSION['pass_reset_' . $account->uid] = $token;
$options['query']['pass-reset-token'] = $token;
}
if (!empty($form_state['redirect'])) {
if (is_array($form_state['redirect'])) {
$destination = $form_state['redirect'][0];
$options = $form_state['redirect'][1];
}
else {
$destination = $form_state['redirect'];
}
}
if (!empty($_GET['destination']) && !url_is_external($_GET['destination'])) {
$query_destination = drupal_parse_url($_GET['destination']);
$destination = $query_destination['path'];
$options['query'] = !empty($options['query']) ? array_merge($options['query'], $query_destination['query']) : $query_destination['query'];
$options['fragment'] = $query_destination['fragment'];
unset($_GET['destination']);
}
// Context redirect takes final precedence.
if (!empty($context['redirect'])) {
if (is_array($context['redirect'])) {
$destination = $context['redirect'][0];
$options = $context['redirect'][1];
}
else {
$destination = $context['redirect'];
}
}
// Allow other modules to alter final destination. This is better than form
// altering TFA forms because callers would need to check the TFA process
// status to figure out when to act.
drupal_alter('tfa_complete_redirect', $destination, $options);
return array(
$destination,
$options,
);
}