function openid_form_user_register_form_alter
Implements hook_form_FORM_ID_alter().
Prefills the login form with values acquired via OpenID.
File
-
modules/
openid/ openid.module, line 182
Code
function openid_form_user_register_form_alter(&$form, &$form_state) {
if (isset($_SESSION['openid']['response'])) {
module_load_include('inc', 'openid');
$response = $_SESSION['openid']['response'];
// Extract Simple Registration keys from the response. We only include
// signed keys as required by OpenID Simple Registration Extension 1.0,
// section 4.
$sreg_values = openid_extract_namespace($response, OPENID_NS_SREG, 'sreg', TRUE);
// Extract Attribute Exchanges keys from the response. We only include
// signed keys. This is not required by the specification, but it is
// recommended by Google, see
// http://googlecode.blogspot.com/2011/05/security-advisory-to-websites-using.html
$ax_values = openid_extract_namespace($response, OPENID_NS_AX, 'ax', TRUE);
if (!empty($sreg_values['nickname'])) {
// Use the nickname returned by Simple Registration if available.
$form['account']['name']['#default_value'] = $sreg_values['nickname'];
}
elseif ($ax_name_values = openid_extract_ax_values($ax_values, array(
'http://axschema.org/namePerson/friendly',
'http://schema.openid.net/namePerson/friendly',
))) {
// Else, use the first nickname returned by AX if available.
$form['account']['name']['#default_value'] = current($ax_name_values);
}
else {
$form['account']['name']['#default_value'] = '';
}
if (!empty($sreg_values['email'])) {
// Use the email returned by Simple Registration if available.
$form['account']['mail']['#default_value'] = $sreg_values['email'];
}
elseif ($ax_mail_values = openid_extract_ax_values($ax_values, array(
'http://axschema.org/contact/email',
'http://schema.openid.net/contact/email',
))) {
// Else, use the first nickname returned by AX if available.
$form['account']['mail']['#default_value'] = current($ax_mail_values);
}
// If user_email_verification is off, hide the password field and just fill
// with random password to avoid confusion.
if (!variable_get('user_email_verification', TRUE)) {
$form['account']['pass']['#type'] = 'hidden';
$form['account']['pass']['#value'] = user_password();
}
$form['openid_claimed_id'] = array(
'#type' => 'value',
'#default_value' => $response['openid.claimed_id'],
);
$form['openid_display'] = array(
'#type' => 'item',
'#title' => t('Your OpenID'),
'#description' => t('This OpenID will be attached to your account after registration.'),
'#markup' => check_plain($response['openid.claimed_id']),
);
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.