95 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			95 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?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' => 'invalid@example.com',
 | |
|                            '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);
 | |
|     }
 | |
| }
 | |
| 
 | |
| ?>
 |