示例#1
0
 /**
  * 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;
     }
 }