Labs Tidy up, depreciate old trip planner tester, promote myway balance/service alerts to main site
[busui.git] / include / common-auth.inc.php
Alexander Sadleir



Alexander Sadleir
Alexander Sadleir
Alexander Sadleir


Alexander Sadleir
Alexander Sadleir


Alexander Sadleir

Alexander Sadleir
Alexander Sadleir
Alexander Sadleir



Alexander Sadleir
Alexander Sadleir
Alexander Sadleir
Alexander Sadleir


Alexander Sadleir
Alexander Sadleir
Alexander Sadleir



Alexander Sadleir



Alexander Sadleir


Alexander Sadleir




1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?php
 
function getScheme() {
    $scheme = 'http';
    if (isset($_SERVER['HTTPS']) and $_SERVER['HTTPS'] == 'on') {
        $scheme .= 's';
    }
    return $scheme;
}
 
function getTrustRoot() {
    return sprintf("%s://%s:%s%s/", getScheme(), $_SERVER['SERVER_NAME'], $_SERVER['SERVER_PORT'], dirname($_SERVER['PHP_SELF']));
}
 
// Includes required files
set_include_path(get_include_path() . PATH_SEPARATOR . $basePath . "lib/openid-php/");
require_once "Auth/OpenID/Consumer.php";
require_once "Auth/OpenID/FileStore.php";
require_once "Auth/OpenID/AX.php";
 
function login() {
    // 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
    $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
    $auth = $consumer->begin($oid_identifier);
 
    // Create attribute request object
    // See http://code.google.com/apis/accounts/docs/OpenID.html#Parameters for parameters
    // 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/namePerson/first', 1, 1, 'firstname');
    $attribute[] = Auth_OpenID_AX_AttrInfo :: make('http://axschema.org/namePerson/last', 1, 1, 'lastname');
 
    // Create AX fetch request
    $ax = new Auth_OpenID_AX_FetchRequest;
 
    // Add attributes to AX fetch request
    foreach ($attribute as $attr) {
        $ax->add($attr);
    }
 
    // Add AX fetch request to authentication request
    $auth->addExtension($ax);
    $_SESSION['returnURL'] = curPageURL();
    // Redirect to OpenID provider for authentication
    $url = $auth->redirectURL(getTrustRoot(), $_SESSION['returnURL']);
    header('Location: ' . $url);
}
 
function auth() {
    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
        $ax = new Auth_OpenID_AX_FetchResponse();
        $obj = $ax->fromSuccessResponse($response);
        $email = $obj->data['http://axschema.org/contact/email'][0];
        var_dump($email);
        if ($email != "maxious@gmail.com") {
            die("Access Denied");
        } else {
            $_SESSION['authed'] = true;
        }
    } else {
        login();
    }
}
 
if ($_REQUEST['janrain_nonce'])
    auth();
?>