/** * Handle OpenID profile management. */ function openid_profile_management() { global $wp_version, $openid; openid_init(); if (!isset($_REQUEST['action'])) { return; } $openid->action = $_REQUEST['action']; require_once ABSPATH . 'wp-admin/admin-functions.php'; if ($wp_version < '2.3') { require_once ABSPATH . 'wp-admin/admin-db.php'; require_once ABSPATH . 'wp-admin/upgrade-functions.php'; } auth_redirect(); nocache_headers(); get_currentuserinfo(); if (!WordPressOpenID_Logic::late_bind()) { return; } // something is broken switch ($openid->action) { case 'add_identity': check_admin_referer('wp-openid-add_identity'); $user = wp_get_current_user(); $store =& WordPressOpenID_Logic::getStore(); global $openid_auth_request; if ($openid_auth_request == NULL) { $consumer = WordPressOpenID_Logic::getConsumer(); $openid_auth_request = $consumer->begin($_POST['openid_url']); } $userid = $store->get_user_by_identity($openid_auth_request->endpoint->claimed_id); if ($userid) { global $error; if ($user->ID == $userid) { $error = 'You already have this openid!'; } else { $error = 'This OpenID is already connected to another user.'; } return; } WordPressOpenID_Logic::start_login($_POST['openid_url'], 'verify'); break; case 'drop_identity': // Remove a binding. WordPressOpenID_Logic::_profile_drop_identity($_REQUEST['id']); break; } }