Example #1
0
/**
 * Finish OpenID Authentication.
 *
 * @return String authenticated identity URL, or null if authentication failed.
 */
function finish_openid_auth()
{
    @session_start();
    $consumer = openid_getConsumer();
    if (array_key_exists('openid_return_to', $_SESSION)) {
        $openid_return_to = $_SESSION['openid_return_to'];
    }
    if (empty($openid_return_to)) {
        $openid_return_to = openid_service_url('consumer');
    }
    $response = $consumer->complete($openid_return_to);
    unset($_SESSION['openid_return_to']);
    openid_response($response);
    switch ($response->status) {
        case Auth_OpenID_CANCEL:
            openid_message(__('OpenID login was cancelled.', 'openid'));
            openid_status('error');
            break;
        case Auth_OpenID_FAILURE:
            openid_message(sprintf(__('OpenID login failed: %s', 'openid'), $response->message));
            openid_status('error');
            break;
        case Auth_OpenID_SUCCESS:
            openid_message(__('OpenID login successful', 'openid'));
            openid_status('success');
            $identity_url = $response->identity_url;
            $escaped_url = htmlspecialchars($identity_url, ENT_QUOTES);
            return $escaped_url;
        default:
            openid_message(__('Unknown Status. Bind not successful. This is probably a bug.', 'openid'));
            openid_status('error');
    }
    return null;
}
Example #2
0
/**
 * Retrieve user data from OpenID Simple Registration.
 *
 * @param string $identity_url OpenID to get user data about
 * @param reference $data reference to user data array
 * @see get_user_data
 */
function openid_get_user_data_sreg($data, $identity_url)
{
    require_once dirname(__FILE__) . '/Auth/OpenID/SReg.php';
    $response = openid_response();
    $sreg_resp = Auth_OpenID_SRegResponse::fromSuccessResponse($response);
    $sreg = $sreg_resp->contents();
    if (!$sreg) {
        return $data;
    }
    if (array_key_exists('email', $sreg) && $sreg['email']) {
        $data['user_email'] = $sreg['email'];
    }
    if (array_key_exists('nickname', $sreg) && $sreg['nickname']) {
        $data['nickname'] = $sreg['nickname'];
        $data['user_nicename'] = $sreg['nickname'];
        $data['display_name'] = $sreg['nickname'];
    }
    if (array_key_exists('fullname', $sreg) && $sreg['fullname']) {
        $namechunks = explode(' ', $sreg['fullname'], 2);
        if (isset($namechunks[0])) {
            $data['first_name'] = $namechunks[0];
        }
        if (isset($namechunks[1])) {
            $data['last_name'] = $namechunks[1];
        }
        $data['display_name'] = $sreg['fullname'];
    }
    return $data;
}