source: spip-zone/_plugins_/plugin-thelia/auth/thelia.php @ 88169

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

Indentation et suppresion du ?> final

File size: 5.7 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
13include_spip('inc/session');
14if (!defined("_ECRIRE_INC_VERSION")) return;
15
16
17error_reporting(E_ALL);
18// Authentifie via Thélia et retourne la ligne SQL decrivant l'utilisateur si ok
19
20// http://doc.spip.org/@inc_auth_ldap_dist
21function auth_thelia_dist($login, $pass, $md5pass = "", $md5next = ""){
22
23        if (lire_config("spip_thelia/auth_unique_spip_thelia", "non")=="oui"){
24
25                spip_log("thelia2 $login " . ($pass ? "mdp fourni" : "mdp absent") . ($md5pass ? "md5mdp fourni" : "md5mdp absent"));
26                if (!file_exists(_RACINE_THELIA . "fonctions/moteur.php")){
27                        spip_log("fichier thelia trouve");
28                        return array();
29                }
30                spip_log("thelia1"); //récupérer le nom de la base spip
31                if ($result = mysql_query("SELECT DATABASE()")){
32                        $row = mysql_fetch_row($result);
33                        $spip_db = $row[0];
34                }
35                spip_log("test1, db courante=" . $spip_db);
36                $res = " foo ";
37                ob_start();
38                include_once(_RACINE_THELIA . 'fonctions/moteur.php');
39                ob_end_clean();
40                //include_once('classes/Client.class.php');
41                spip_log("test2");
42
43
44                // Securite
45                if (!$login || (!$pass && !$md5pass)) return array();
46
47
48                // Utilisateur connu ?
49                $client = New Client();
50                $rec = $client->charger($login, $pass);
51
52                //revenir sur la base spip
53                $resultconnect = mysql_select_db($spip_db);
54                spip_log("spipdb=" . $spip_db . " - " . $resultconnect);
55                if ($rec){
56                        spip_log("thelia $login utilisateur connu");
57                        $_SESSION['navig']->client = $client;
58                        $_SESSION['navig']->connecte = 1;
59                        modules_fonction("apresconnexion");
60
61                        // importer les infos depuis thelia,
62                        // avec le statut par defaut a l'install
63                        // refuser d'importer n'importe qui
64                        if (!$statut = $GLOBALS['thelia_statut_nouvel_auteur']) return array();
65
66                        if ($result = sql_fetsel("*", "spip_auteurs", "login=" . sql_quote($login) . " AND source='thelia'")){
67                                $data = pipeline('thelia_authentifie', array("auteur" => $result, "statut" => "existant"));
68                                return $data['auteur'];
69                        }
70
71                        spip_log("thelia2");
72                        // Recuperer les donnees de l'auteur
73                        // Convertir depuis UTF-8 (jeu de caracteres par defaut)
74                        include_spip('inc/charsets');
75                        $nom = $client->nom . ' ' . $client->prenom;
76                        $email = $login;
77                        $bio = '';
78                        $resultconnect = mysql_select_db($spip_db);
79                        spip_log("thelia2bis-connect=" . $resultconnect);
80                        $n = sql_insertq('spip_auteurs', array(
81                                'source' => 'thelia',
82                                'nom' => $nom,
83                                'login' => $login,
84                                'email' => $email,
85                                'bio' => $bio,
86                                'statut' => $statut,
87                                'pass' => ''), 0);
88                        spip_log("thelia3");
89                        spip_log("Creation de l'auteur '$nom' depuis thelia dans spip_auteurs id->" . $n);
90
91                        spip_log("thelia4");
92
93                        if ($_SESSION['navig']->urlpageret){
94                                spip_log("redirige vers " . $_SESSION['navig']->urlpageret);
95                                redirige($_SESSION['navig']->urlpageret);
96                        } else {
97                                spip_log("redirige vers index.php");
98                                redirige("index.php");
99                        }
100                        spip_log("test6");
101                        if ($n){
102                                $auteur = sql_fetsel("*", "spip_auteurs", "id_auteur=$n");
103                                $data = pipeline('thelia_authentifie', array("auteur" => $auteur, "statut" => "nouveau"));
104                                return $data['auteur'];
105                        }
106
107                        spip_log("Creation de l'auteur '$nom' depuis thelia impossible");
108
109
110                        return array();
111
112                } else {
113                        //utilisateur inconnu
114                        spip_log("thelia $login utilisateur inconnu");
115                        redirige("connexion.php?errconnex=1");
116                        return array();
117                }
118        }
119        spip_log("thelia0");
120
121        return array();
122
123}
124
125/*
126        $auteur = array(login,pass,client)
127*/
128function creer_auteur_thelia($auteur){
129
130        if (empty($auteur))
131                return array();
132
133        //Empecher un doublon
134        if (isset($auteur['login']) && $result = sql_fetsel("*", "spip_auteurs", "login=" . sql_quote($auteur['login']) . " AND source='thelia'")){
135                spip_log("l'utilisateur $login est déjà enregistré dans spip tout va bien", 'theliaob');
136                return $result;
137        }
138
139        //charger le support thelia     
140        ob_start();
141        include_once('fonctions/moteur.php');
142        ob_end_clean();
143
144        //Empecher un doublon
145        if (isset($auteur['client']) && $result = sql_fetsel("*", "spip_auteurs", "login=" . sql_quote($auteur['client']->email) . " AND source='thelia'")){
146                spip_log("l'utilisateur $login est déjà enregistré dans spip tout va bien", 'theliaob');
147                return $result;
148        }
149
150        //Tester la présence dans thelia
151        $client = $auteur['client'];
152        if (!$auteur['client']){
153                $client = New Client();
154                if (!$client->charger($auteur['login'], $auteur['pass']))
155                        return array();
156        }
157
158        //Valeur par défaut
159        if (!$statut = $GLOBALS['thelia_statut_nouvel_auteur']){
160                spip_log('erreur pas de statut defini par defaut', 'theliaob');
161                return array();
162        }
163
164        spip_log("enregistrement auteur", 'theliaob');
165        // Recuperer les donnees de l'auteur
166        // Convertir depuis UTF-8 (jeu de caracteres par defaut)
167        include_spip('inc/charsets');
168        $nom = $client->nom . ' ' . $client->prenom;
169        $login = $email = $client->email;
170        $bio = '';
171        $n = sql_insertq(
172                'spip_auteurs',
173                array(
174                        'source' => 'thelia',
175                        'nom' => $nom,
176                        'login' => $login,
177                        'email' => $email,
178                        'bio' => $bio,
179                        'statut' => $statut,
180                        'pass' => '')
181        );
182        spip_log('Auteur depuis thelia d\'id ' . $n, 'theliaob');
183
184        return sql_fetsel("*", "spip_auteurs", "id_auteur=$n");
185}
186
Note: See TracBrowser for help on using the repository browser.