<?php 
 
require_once "lib/render.php"; 
require_once "lib/session.php"; 
 
require_once "lib/render/login.php"; 
require_once "lib/render/about.php"; 
require_once "lib/render/trust.php"; 
 
require_once "Auth/OpenID/Server.php"; 
require_once "Auth/OpenID/SReg.php"; 
 
function authCancel($info) 
{ 
    if ($info) { 
        setRequestInfo(); 
        $url = $info->getCancelURL(); 
    } else { 
        $url = getServerURL(); 
    } 
    return redirect_render($url); 
} 
 
function doAuth($info, $trusted=null, $fail_cancels=false, 
                $idpSelect=null) 
{ 
    if (!$info) { 
        // There is no authentication information, so bail 
        return authCancel(null); 
    } 
 
    if ($info->idSelect()) { 
        if ($idpSelect) { 
            $req_url = idURL($idpSelect); 
        } else { 
            $trusted = false; 
        } 
    } else { 
        $req_url = $info->identity; 
    } 
 
    $user = getLoggedInUser(); 
    setRequestInfo($info); 
 
    if ((!$info->idSelect()) && ($req_url != idURL($user))) { 
        return login_render(array(), $req_url, $req_url); 
    } 
 
    $trust_root = $info->trust_root; 
 
    if ($trusted) { 
        setRequestInfo(); 
        $server = getServer(); 
        $response = $info->answer(true, null, $req_url); 
 
        // Answer with some sample Simple Registration data. 
        $sreg_data = array( 
                           'fullname' => 'Example User', 
                           'nickname' => 'example', 
                           'dob' => '1970-01-01', 
                           'email' => '[email protected]', 
                           'gender' => 'F', 
                           'postcode' => '12345', 
                           'country' => 'ES', 
                           'language' => 'eu', 
                           'timezone' => 'America/New_York'); 
 
        // Add the simple registration response values to the OpenID 
        // response message. 
        $sreg_request = Auth_OpenID_SRegRequest::fromOpenIDRequest( 
                                              $info); 
 
        $sreg_response = Auth_OpenID_SRegResponse::extractResponse( 
                                              $sreg_request, $sreg_data); 
 
        $sreg_response->toMessage($response->fields); 
 
        // Generate a response to send to the user agent. 
        $webresponse = $server->encodeResponse($response); 
 
        $new_headers = array(); 
 
        foreach ($webresponse->headers as $k => $v) { 
            $new_headers[] = $k.": ".$v; 
        } 
 
        return array($new_headers, $webresponse->body); 
    } elseif ($fail_cancels) { 
        return authCancel($info); 
    } else { 
        return trust_render($info); 
    } 
} 
 
?>
 
 |