Index: openid.module =================================================================== --- openid.module (revision 344) +++ openid.module (working copy) @@ -6,6 +6,8 @@ * Impelement OpenID Relying Party support for Drupal */ +define('OPENID_DUMMY_EMAIL', 'postmaster@localhost'); + /** * Implementation of hook_menu. */ @@ -19,6 +21,13 @@ 'access' => TRUE, 'type' => MENU_CALLBACK, ); + $items[] = array( + 'path' => 'admin/settings/openid', + 'title' => t('OpenID settings'), + 'callback'=> 'drupal_get_form', + 'access' => user_access('administer users'), + 'callback arguments' => array('openid_settings'), + ); } else { if (arg(0) == 'user' && is_numeric(arg(1))) { @@ -481,7 +490,17 @@ // Register new user $form = drupal_retrieve_form('user_register'); $edit['name'] = (empty($response['openid.sreg.nickname'])) ? $identity : $response['openid.sreg.nickname']; - $edit['mail'] = (empty($response['openid.sreg.email'])) ? '' : $response['openid.sreg.email']; + if (empty($response['openid.sreg.email'])) { + if (variable_get('openid_allow_empty_email', false)) { + $edit['mail'] = variable_get('openid_dummy_email', OPENID_DUMMY_EMAIL); + } + else { + $edit['mail'] = ''; + } + } + else { + $edit['mail'] = $response['openid.sreg.email']; + } $edit['pass'] = user_password(); $edit['status'] = variable_get('user_register', 1) == 1; $edit['response'] = $response; @@ -598,3 +617,31 @@ return $valid; } + +function openid_settings() { + $form['openid_allow_empty_email'] = array( + '#type' => 'checkbox', + '#title' => t('Allow empty emails in successful OpenID authentication'), + '#default_value' => variable_get('openid_allow_empty_email', false), + ); + $form['openid_dummy_email'] = array( + '#type' => 'textfield', + '#title' => t('"Dummy" address for empty email fields'), + '#default_value' => variable_get('openid_dummy_email', OPENID_DUMMY_EMAIL), + '#size' => 30, + '#maxlength' => 128, + '#required' => false, + '#description' => t('A "dummy" email address to use if "Allow empty emails" is checked. The user may change this later.'), + ); + return system_settings_form($form); +} + +function openid_settings_validate($form_id, $form_values) { + if (!valid_email_address($form_values['openid_dummy_email'])) { + form_set_error('openid_dummy_email', t('Invalid email address.')); + } +} + +function openid_settings_submit($form_id, $form_values) { + system_settings_form_submit($form_id, $form_values); +}