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

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

Autodoc et credits sur les contributeurs principaux

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