Subversion Repositories Applications.annuaire

Rev

Rev 42 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
42 aurelien 1
<?  // fichiers inclus
2
  require_once "Auth/OpenID/Consumer.php";
3
  require_once "Auth/OpenID/FileStore.php";
4
 
5
  // démarrage de la session (requis pour YADIS)
6
  session_start();
7
 
8
  // crée une zone de stockage pour les données OpenID
9
  $store = new Auth_OpenID_FileStore('./oid_store');
10
 
11
  // crée un consommateur OpenID
12
  $consumer = new Auth_OpenID_Consumer($store);
13
 
14
  // commence le process d'authentification
15
  // crée une requête d'authentification pour le fournisseur OpenID
16
  $auth = $consumer->begin($_POST['id']);
17
  if (!$auth) {
18
    die("ERROR: Entrez un OpenID valide svp.");
19
  }
20
 
21
  // redirige vers le fournisseur OpenID pour l'authentification
22
  $url = $auth->redirectURL('http://consumer.example.com/', 'http://consumer.example.com/oid_return.php');
23
  header('Location: ' . $url);
24
 
25
// fichiers inclus
26
require_once "Auth/OpenID/Consumer.php";
27
require_once "Auth/OpenID/FileStore.php";
28
require_once "Auth/OpenID/SReg.php";
29
 
30
// démarrage de session (requis pour YADIS)
31
session_start();
32
 
33
// crée une zone de stockage pour les données OpenID
34
$store = new Auth_OpenID_FileStore('./oid_store');
35
 
36
// crée un consommateur OpenID
37
// lit la réponse depuis e fournisseur OPenID
38
$consumer = new Auth_OpenID_Consumer($store);
39
$response = $consumer->complete('http://consumer.example.com/oid_return.php');
40
 
41
// crée une variable de session qui dépend de l'authentification
42
if ($response->status == Auth_OpenID_SUCCESS) {
43
  $_SESSION['OPENID_AUTH'] = true;
44
 
45
  // récupère les informations d'enregistrement
46
 $sreg = new Auth_OpenID_SRegResponse();
47
  $obj = $sreg->fromSuccessResponse($response);
48
  $data = $obj->contents();
49
 
50
  if (isset($data['email'])) {
51
    // Si l'adresse mail est disponible
52
    // Vérifie si l'utilisateur a déjà un compte sur le système
53
 
54
    // ouvre une connexion a la base
55
    $conn = mysql_connect('localhost', 'user', 'pass') or die('ERROR: Connexion serveur impossible');
56
    mysql_select_db('test') or die('ERROR: Impossible de sélectionner une base');
57
 
58
    // exécute la requête
59
    $result = mysql_query("SELECT DISTINCT COUNT(*) FROM users WHERE email = '" . $data['email'] . "'") or die('ERROR: La requête ne peut pas être exécutée');
60
 
61
    $row = mysql_fetch_array($result);
62
    if ($row[0] == 1) {
63
      // si oui affiche un message personnalisé
64
      $newUser = false;
65
      echo 'Bonjour et bienvenue, ' . $data['email'];
66
      exit();
67
    } else {
68
      // si non avertit que l'utilisateur est nouveau
69
      $newUser = true;
70
    }
71
 
72
    // ferme la connexion
73
    mysql_free_result($result);
74
    mysql_close($conn);
75
  } else {
76
    // si l'adresse email n'est pas disponible
77
    // avertit que l'utilisateur est nouveau
78
 $newUser = true;
79
  }
80
} else {
81
  $_SESSION['OPENID_AUTH'] = false;
82
  die ('Vous n'avez pas la permission d'accéder a cette page! Re-loggez vous svp.');
83
}
84
 
85
?>