/** * Send the user to their OpenID provider to authenticate. * * @param Auth_OpenID_AuthRequest $auth_request OpenID authentication request object * @param string $trust_root OpenID trust root * @param string $return_to URL where the OpenID provider should return the user */ function openid_redirect($auth_request, $trust_root, $return_to) { do_action('openid_redirect', $auth_request, $trust_root, $return_to); $message = $auth_request->getMessage($trust_root, $return_to, false); if (Auth_OpenID::isFailure($message)) { return openid_error('Could not redirect to server: ' . $message->message); } $_SESSION['openid_return_to'] = $message->getArg(Auth_OpenID_OPENID_NS, 'return_to'); // send 302 redirect or POST if ($auth_request->shouldSendRedirect()) { $redirect_url = $auth_request->redirectURL($trust_root, $return_to); wp_redirect($redirect_url); } else { openid_repost($auth_request->endpoint->server_url, $message->toPostArgs()); } }
/** * Send the user to their OpenID provider to authenticate. * * @param Auth_OpenID_AuthRequest $auth_request OpenID authentication request object * @param string $trust_root OpenID trust root * @param string $return_to URL where the OpenID provider should return the user */ function openid_doRedirect($auth_request, $trust_root, $return_to) { if ($auth_request->shouldSendRedirect()) { $trust_root = trailingslashit($trust_root); $redirect_url = $auth_request->redirectURL($trust_root, $return_to); if (Auth_OpenID::isFailure($redirect_url)) { openid_error('Could not redirect to server: ' . $redirect_url->message); } else { wp_redirect($redirect_url); } } else { // Generate form markup and render it $request_message = $auth_request->getMessage($trust_root, $return_to, false); if (Auth_OpenID::isFailure($request_message)) { openid_error('Could not redirect to server: ' . $request_message->message); } else { openid_repost($auth_request->endpoint->server_url, $request_message->toPostArgs()); } } }
/** * Action method for completing the 'comment' action. This action is used when leaving a comment. * * @param string $identity_url verified OpenID URL */ function openid_finish_comment($identity_url) { if ($_REQUEST['action'] != 'comment') { return; } if (empty($identity_url)) { openid_repost_comment_anonymously($_SESSION['openid_comment_post']); } openid_set_current_user($identity_url); if (is_user_logged_in()) { // simulate an authenticated comment submission $_SESSION['openid_comment_post']['author'] = null; $_SESSION['openid_comment_post']['email'] = null; $_SESSION['openid_comment_post']['url'] = null; } else { // try to get user data from the verified OpenID $user_data =& openid_get_user_data($identity_url); if (!empty($user_data['display_name'])) { $_SESSION['openid_comment_post']['author'] = $user_data['display_name']; } if (!empty($user_data['user_email'])) { $_SESSION['openid_comment_post']['email'] = $user_data['user_email']; } $_SESSION['openid_comment_post']['url'] = $identity_url; } // record that we're about to post an OpenID authenticated comment. // We can't actually record it in the database until after the repost below. $_SESSION['openid_posted_comment'] = true; $comment_page = defined('OPENID_COMMENTS_POST_PAGE') ? OPENID_COMMENTS_POST_PAGE : 'wp-comments-post.php'; openid_repost(site_url("/{$comment_page}"), array_filter($_SESSION['openid_comment_post'])); }