Labs Tidy up, depreciate old trip planner tester, promote myway balance/service alerts to main site
[busui.git] / include / common-auth.inc.php
blob:a/include/common-auth.inc.php -> blob:b/include/common-auth.inc.php
<?php <?php
function getScheme()  
{ function getScheme() {
$scheme = 'http'; $scheme = 'http';
if (isset($_SERVER['HTTPS']) and $_SERVER['HTTPS'] == 'on') { if (isset($_SERVER['HTTPS']) and $_SERVER['HTTPS'] == 'on') {
$scheme .= 's'; $scheme .= 's';
} }
return $scheme; return $scheme;
} }
   
function getTrustRoot() function getTrustRoot() {
{ return sprintf("%s://%s:%s%s/", getScheme(), $_SERVER['SERVER_NAME'], $_SERVER['SERVER_PORT'], dirname($_SERVER['PHP_SELF']));
return sprintf("%s://%s:%s%s/", }
getScheme(), $_SERVER['SERVER_NAME'],  
$_SERVER['SERVER_PORT'],  
dirname($_SERVER['PHP_SELF']));  
}  
   
   
// Includes required files // Includes required files
set_include_path(get_include_path() . PATH_SEPARATOR . $labsPath."lib/openid-php/"); set_include_path(get_include_path() . PATH_SEPARATOR . $basePath . "lib/openid-php/");
require_once "Auth/OpenID/Consumer.php"; require_once "Auth/OpenID/Consumer.php";
require_once "Auth/OpenID/FileStore.php"; require_once "Auth/OpenID/FileStore.php";
require_once "Auth/OpenID/AX.php"; require_once "Auth/OpenID/AX.php";
   
  function login() {
  // Just tested this with/for Google, needs trying with others ...
function login() $oid_identifier = 'https://www.google.com/accounts/o8/id';
{  
// Just tested this with/for Google, needs trying with others ...  
$oid_identifier = 'https://www.google.com/accounts/o8/id';  
// Create file storage area for OpenID data // Create file storage area for OpenID data
$store = new Auth_OpenID_FileStore('lib/openid-php/oid_store'); $store = new Auth_OpenID_FileStore('lib/openid-php/oid_store');
// Create OpenID consumer // Create OpenID consumer
$consumer = new Auth_OpenID_Consumer($store); $consumer = new Auth_OpenID_Consumer($store);
// Create an authentication request to the OpenID provider // Create an authentication request to the OpenID provider
$auth = $consumer -> begin($oid_identifier); $auth = $consumer->begin($oid_identifier);
   
// Create attribute request object // Create attribute request object
// See http://code.google.com/apis/accounts/docs/OpenID.html#Parameters for parameters // See http://code.google.com/apis/accounts/docs/OpenID.html#Parameters for parameters
// Usage: make($type_uri, $count=1, $required=false, $alias=null) // Usage: make($type_uri, $count=1, $required=false, $alias=null)
$attribute[] = Auth_OpenID_AX_AttrInfo :: make('http://axschema.org/contact/email', 2, 1, 'email'); $attribute[] = Auth_OpenID_AX_AttrInfo :: make('http://axschema.org/contact/email', 2, 1, 'email');
$attribute[] = Auth_OpenID_AX_AttrInfo :: make('http://axschema.org/namePerson/first', 1, 1, 'firstname'); $attribute[] = Auth_OpenID_AX_AttrInfo :: make('http://axschema.org/namePerson/first', 1, 1, 'firstname');
$attribute[] = Auth_OpenID_AX_AttrInfo :: make('http://axschema.org/namePerson/last', 1, 1, 'lastname'); $attribute[] = Auth_OpenID_AX_AttrInfo :: make('http://axschema.org/namePerson/last', 1, 1, 'lastname');
   
// Create AX fetch request // Create AX fetch request
$ax = new Auth_OpenID_AX_FetchRequest; $ax = new Auth_OpenID_AX_FetchRequest;
   
// Add attributes to AX fetch request // Add attributes to AX fetch request
foreach($attribute as $attr) { foreach ($attribute as $attr) {
$ax -> add($attr); $ax->add($attr);
} }
   
// Add AX fetch request to authentication request // Add AX fetch request to authentication request
$auth -> addExtension($ax); $auth->addExtension($ax);
$_SESSION['returnURL'] = curPageURL(); $_SESSION['returnURL'] = curPageURL();
// Redirect to OpenID provider for authentication // Redirect to OpenID provider for authentication
$url = $auth -> redirectURL(getTrustRoot(), $_SESSION['returnURL']); $url = $auth->redirectURL(getTrustRoot(), $_SESSION['returnURL']);
header('Location: ' . $url); header('Location: ' . $url);
} }
   
  function auth() {
  if ($_SESSION['authed'] == true)
  return true;
   
function auth() // Create file storage area for OpenID data
  $store = new Auth_OpenID_FileStore('lib/openid-php/oid_store');
  // Create OpenID consumer
  $consumer = new Auth_OpenID_Consumer($store);
  // Create an authentication request to the OpenID provider
  $response = $consumer->complete($_SESSION['returnURL']);
   
{ if ($response->status == Auth_OpenID_SUCCESS) {
if ($_SESSION['authed'] == true) return true;  
   
// Create file storage area for OpenID data  
$store = new Auth_OpenID_FileStore('lib/openid-php/oid_store');  
// Create OpenID consumer  
$consumer = new Auth_OpenID_Consumer($store);  
// Create an authentication request to the OpenID provider  
$response = $consumer -> complete($_SESSION['returnURL']);  
   
if ($response -> status == Auth_OpenID_SUCCESS) {  
// Get registration informations // Get registration informations
$ax = new Auth_OpenID_AX_FetchResponse(); $ax = new Auth_OpenID_AX_FetchResponse();
$obj = $ax -> fromSuccessResponse($response); $obj = $ax->fromSuccessResponse($response);
$email = $obj -> data['http://axschema.org/contact/email'][0]; $email = $obj->data['http://axschema.org/contact/email'][0];
var_dump($email); var_dump($email);
if ($email != "maxious@gmail.com") { if ($email != "maxious@gmail.com") {
die("Access Denied"); die("Access Denied");
} else {  
$_SESSION['authed'] = true;  
}  
} else { } else {
  $_SESSION['authed'] = true;
  }
  } else {
login(); login();
} }
} }
if ($_REQUEST['janrain_nonce']) auth();  
  if ($_REQUEST['janrain_nonce'])
  auth();
?> ?>