<?php |
<?php |
|
|
/* |
/* |
* Copyright 2010,2011 Alexander Sadleir |
* Copyright 2010,2011 Alexander Sadleir |
|
|
Licensed under the Apache License, Version 2.0 (the "License"); |
Licensed under the Apache License, Version 2.0 (the "License"); |
you may not use this file except in compliance with the License. |
you may not use this file except in compliance with the License. |
You may obtain a copy of the License at |
You may obtain a copy of the License at |
|
|
http://www.apache.org/licenses/LICENSE-2.0 |
http://www.apache.org/licenses/LICENSE-2.0 |
|
|
Unless required by applicable law or agreed to in writing, software |
Unless required by applicable law or agreed to in writing, software |
distributed under the License is distributed on an "AS IS" BASIS, |
distributed under the License is distributed on an "AS IS" BASIS, |
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
See the License for the specific language governing permissions and |
See the License for the specific language governing permissions and |
limitations under the License. |
limitations under the License. |
*/ |
*/ |
|
|
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 . $basePath . "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() { |
function login() { |
|
global $basePath; |
// Just tested this with/for Google, needs trying with others ... |
// Just tested this with/for Google, needs trying with others ... |
$oid_identifier = 'https://www.google.com/accounts/o8/id'; |
$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(realpath($basePath) . '/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() { |
function auth() { |
|
global $basePath; |
if ($_SESSION['authed'] == true) |
if ($_SESSION['authed'] == true) |
return true; |
return true; |
|
|
// 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(realpath($basePath) . '/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 |
$response = $consumer->complete($_SESSION['returnURL']); |
$response = $consumer->complete($_SESSION['returnURL']); |
|
|
if ($response->status == Auth_OpenID_SUCCESS) { |
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 { |
} else { |
$_SESSION['authed'] = true; |
$_SESSION['authed'] = true; |
} |
} |
} else { |
} else { |
login(); |
login(); |
} |
} |
} |
} |
|
|
if ($_REQUEST['janrain_nonce']) |
if ($_REQUEST['janrain_nonce']) |
auth(); |
auth(); |
?> |
?> |