source: spip-zone/_plugins_/authentification/openid/spip_2_1/auth/openid.php @ 32324

Last change on this file since 32324 was 32324, checked in by cedric@…, 11 years ago

faire et defaire ! on remet a la racine tout ce qui peut etre commun entre les 2 versions du plugin
et on commence a faire le portage 2.1

File size: 3.5 KB
Line 
1<?php
2
3/***************************************************************************\
4 *  SPIP, Systeme de publication pour l'internet                           *
5 *                                                                         *
6 *  Copyright (c) 2001-2008                                                *
7 *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
8 *                                                                         *
9 *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
10 *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
11\***************************************************************************/
12
13if (!defined("_ECRIRE_INC_VERSION")) return;
14
15//
16/**
17 * Authentifie via OPENID
18 *      lance une redirection http au premier passage (log_step='check')
19 *  et retourne la ligne SQL decrivant l'utilisateur si ok au second passage (log_step='ok')
20 * @param string $login
21 * @param string $pass
22 * @param string $serveur
23 * @param string $log_step
24 * @return <type>
25 */
26function auth_openid_dist ($login, $pass, $serveur='', $log_step='check') {
27
28        // il faut un login non vide ET un pass vide (sinon cela ne concerne pas OpenID)
29        if (!strlen($login) OR strlen($pass)) return false;
30        $auteur = false;
31       
32        // retrouver le login
33        if (!$login = auth_openid_retrouver_login($login)
34                OR !$idurl = sql_getfetsel("openid", "spip_auteurs", "login=" . sql_quote($login),"","","","",$serveur) )
35                return false;
36       
37        if ($log_step=='check') {
38                // * Si l'openid existe, la procedure continue en redirigeant
39                // vers le fournisseur d'identite. En cas d'erreur, il y a une redirection de faite
40                // sur la page login, en cas de reussite, sur l'action controler_openid
41                // * S'il l'openid n'existe pas, on est de retour ici, et on continue
42                // pour d'autres methodes d'identification
43                include_spip('inc/openid');
44                $erreurs_openid = demander_authentification_openid($idurl, url_absolue(self()));
45                // potentiellement, on arrive ici avec une erreur si l'openid donne n'existe pas
46                // on la renvoie
47                return $erreurs_openid;
48        }
49        elseif ($log_step=='ok'){
50                $auteur = sql_fetsel("*", "spip_auteurs", "login=" . sql_quote($login),"","","","",$serveur);
51                $auteur['auth'] = 'openid'; // on se log avec cette methode, donc
52        }
53
54        return $auteur;
55}
56
57function auth_openid_formulaire_login($flux){
58        include_spip('inc/openid');
59        $flux['data'] = openid_login_form($flux['data'],$flux['args']['contexte']);
60        return $flux;
61}
62
63
64/**
65 * Retrouver le login de quelqu'un qui cherche a se loger
66 * Reconnaitre aussi ceux qui donnent leur nom ou email au lieu du login
67 *
68 * @param string $login
69 * @return string
70 */
71function auth_openid_retrouver_login($login, $serveur=''){
72        include_spip('inc/openid');
73
74        // regarder si l'utilisateur figure deja dans la base
75        // il faut au moins que ca ressemble un peu a un openid !
76        if (is_openid($login)
77          AND $idurl = nettoyer_openid($login)          // si pas de protocole, mettre http://
78                AND $r = sql_getfetsel("login", "spip_auteurs", array("statut!=".sql_quote("5poubelle") , "openid=" . sql_quote($idurl)),'','','','',$serveur)) {
79
80                return $r;
81        }
82
83        // encore plus fort :
84        // si le login est un login spip mais qu'on arrive la,
85        // et qu'il a pas fournit de pass
86        // dans ce cas, si l'utilisateur a un openid on peut tenter de la loger avec !
87        if ($r = sql_getfetsel("login", "spip_auteurs", array("statut!=".sql_quote("5poubelle") , "login=" . sql_quote($login). " AND openid>''"),'','','','',$serveur)){
88                return $r;
89        }
90
91        return false;
92}
93
94?>
Note: See TracBrowser for help on using the repository browser.