Index: modules/openid/openid.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/openid/openid.module,v
retrieving revision 1.19
diff -u -p -r1.19 openid.module
--- modules/openid/openid.module 30 Jan 2008 22:11:22 -0000 1.19
+++ modules/openid/openid.module 15 Feb 2008 13:30:23 -0000
@@ -124,6 +124,12 @@ function openid_form_alter(&$form, $form
$form['pass']['#value'] = user_password();
}
$form['auth_openid'] = array('#type' => 'hidden', '#value' => $_SESSION['openid']['values']['auth_openid']);
+ $form['openid_display'] = array(
+ '#type' => 'item',
+ '#title' => t('Your OpenID'),
+ '#description' => t('This OpenID will be attached to your account after registration.'),
+ '#value' => $_SESSION['openid']['values']['auth_openid'],
+ );
}
return $form;
}
@@ -398,8 +404,8 @@ function openid_authentication($response
elseif (variable_get('user_register', 1)) {
// Register new user
$form_state['redirect'] = NULL;
- $form_state['values']['name'] = (empty($response['openid.sreg.nickname'])) ? $identity : $response['openid.sreg.nickname'];
- $form_state['values']['mail'] = (empty($response['openid.sreg.email'])) ? '' : $response['openid.sreg.email'];
+ $form_state['values']['name'] = (!empty($response['openid.sreg.nickname'])) ? $response['openid.sreg.nickname'] : _openid_username_from_id($identity);
+ $form_state['values']['mail'] = (!empty($response['openid.sreg.email'])) ? $response['openid.sreg.email'] : '';
$form_state['values']['pass'] = user_password();
$form_state['values']['status'] = variable_get('user_register', 1) == 1;
$form_state['values']['response'] = $response;
@@ -410,7 +416,7 @@ function openid_authentication($response
if (form_get_errors()) {
// We were unable to register a valid new user, redirect to standard
// user/register and prefill with the values we received.
- drupal_set_message(t('OpenID registration failed for the reasons listed. You may register now, or if you already have an account you can log in now and add your OpenID under "My Account"', array('@login' => url('user/login'))), 'error');
+ drupal_set_message(t('You are identifying to this site for the first time, and some requirements could not be fulfilled automatically. Please complete the registration process manually, or log in normally if you have an account already.', array('@login' => url('user/login'))), 'warning');
$_SESSION['openid']['values'] = $form_state['values'];
// We'll want to redirect back to the same place.
$destination = drupal_get_destination();
@@ -527,3 +533,23 @@ function openid_verify_assertion($op_end
}
return $valid;
}
+
+/**
+ * Extract an alphanumeric username from an OpenID URL.
+ *
+ * @param $id The OpenID URL to sanitize
+ *
+ * @return $name A valid username for a Drupal account.
+ */
+
+function _openid_username_from_id($id) {
+ $tokens = parse_url($id);
+
+ $sub = strrev(substr(strrchr(strrev($tokens['host']), '.'), 1));
+ $path = substr(strrchr('/'. rtrim($tokens['path'], '/'), '/'), 1);
+
+ $name = $path ? $path : $sub;
+
+ return trim(preg_replace('/[^a-z0-9]+/', '-', $name), '-');
+}
+