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); | ||
|  |     } | ||
|  | } | ||
|  | 
 | ||
|  | ?>
 |