Example #1
0
/**
 * 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());
    }
}
Example #2
0
/**
 * 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());
        }
    }
}
Example #3
0
/**
 * 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']));
}