source: spip-zone/_plugins_/fblogin/dev/auth/fblogin.php @ 44690

Last change on this file since 44690 was 44690, checked in by jrolli@…, 10 years ago

On simplifie... mais il faut toujours cliquer sur "valider" dans le formulaire de login pour entrer dans l'espace privé... donc pas de login "automatique" sur le reload de la page login... bref, on continue à chercher...

File size: 3.8 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 * Authentifie via fblgoin
12 * @param string $login
13 * @param string $pass
14 * @param string $serveur
15 * @return <type>
16 */
17 
18function auth_fblogin_dist ($login, $pass, $serveur='') {
19
20// il faut vérifier que l'on détecte une session FB, on commence par inclure la bibliothèque FB
21        include_spip('inc/facebook');
22        include_spip('inc/fblogin');
23       
24        fblogin_log("Je suis passé par ici", 2);
25       
26        // Création de l'objet Facebook
27        $facebook = new Facebook(array(
28          'appId'  => '_FB_APP_ID',
29          'secret' => '_FB_SECRET_ID',
30          'cookie' => true,
31        ));
32       
33        $session = $facebook->getSession();
34       
35        // On ne trouve pas de cookie, on renvoie vers FB
36        if (!$session) {
37                header('Location:'.$facebook->getLoginUrl(array('req_perms'=>'email','locale'=>'fr_FR')));
38                return false;
39        }
40        // On a trouvé un cookie, on a donc les infos sur l'auteur. Je les stocke dans $fbme
41        else {
42                try {
43                        $_SESSION['fb_session'] = $session;
44                        $uid = $facebook->getUser();
45                        $fbme = $facebook->api('/me');
46                }
47                catch (FacebookApiException $erreurs_fblogin){return $erreurs_fblogin;};
48        }
49       
50        $password = sha1(uniqid());
51       
52        // On va vérifier que l'uid est bien présent dans la table auteurs
53        if (!sql_countsel("spip_auteurs","fb_uid=$uid")) {
54                //Il n'y a pas d'uid. On verifie si l'auteur avait déjà un compte SPIP en s'appuyant sur son e-mail
55                        if (!sql_countsel("spip_auteurs","email =".sql_quote($fbme['email']))) {
56                                // SPIP n'a pas trouvé de correspondance entre l'email FB et les e-mails de la table auteurs
57                                // On crée donc un nouvel auteur pour ne pas dépendre de FB
58                                $id_auteur = sql_insertq('spip_auteurs',
59                                        array('nom'=> $fbme['name'], 
60                                                  'email' => $fbme['email'],
61                                                  'login' => $fbme['email'],
62                                                  'pass' => $password,
63                                                  'statut' => "1comite",
64                                                  'source' => "fblogin",
65                                                  'fb_uid' => $uid));
66                                $auteur=sql_fetsel("*", "spip_auteurs", "id_auteur=".sql_quote($id_auteur),'','','','',$serveur);
67                                }
68                                // SPIP a trouvé un e-mail correspondant, on va juste ajouter l'uid à l'auteur existant
69                        else {
70                                $auteur = sql_updateq("spip_auteurs",array('source'=>"fblogin",'fb_uid' => $uid),"email =".sql_quote($fbme['email']));
71                                $auteur=sql_fetsel("*", "spip_auteurs", "fb_uid=".sql_quote($uid),'','','','',$serveur);
72                                }
73                }
74        else {
75                // l'uid Facebook de l'auteur existe, il faut juste retrouver ses informations pour le logguer
76                $auteur = sql_fetsel("*", "spip_auteurs", "fb_uid=" . sql_quote($uid) . " AND source='fblogin'",'','','','',$serveur);
77        }
78       
79        $login = $auteur['login'];
80        return $auteur;
81}
82 
83function auth_fblogin_terminer_identifier_login($login, $serveur=''){
84        // Création de l'objet Facebook
85        $facebook = new Facebook(array(
86          'appId'  => '_FB_APP_ID',
87          'secret' => '_FB_SECRET_ID',
88          'cookie' => true,
89        ));
90       
91        $session = $facebook->getSession();
92
93        $_SESSION['fb_session'] = $session;
94        $uid = $facebook->getUser();
95        $fbme = $facebook->api('/me');
96       
97        $auteur = sql_fetsel("*", "spip_auteurs", "fb_uid=" . sql_quote($uid) . " AND source='fblogin'",'','','','',$serveur);
98
99        return $auteur;
100}
101
102function auth_fblogin_retrouver_login($login, $serveur='') {
103        // Création de l'objet Facebook
104        $facebook = new Facebook(array(
105          'appId'  => '_FB_APP_ID',
106          'secret' => '_FB_SECRET_ID',
107          'cookie' => true,
108        ));
109       
110        $session = $facebook->getSession();
111
112        $_SESSION['fb_session'] = $session;
113        $uid = $facebook->getUser();
114        $fbme = $facebook->api('/me');
115
116       
117        if($auteur = sql_fetsel("*", "spip_auteurs", "fb_uid=".sql_quote($uid),'','','','',$serveur)) {
118                return $auteur;
119        }
120       
121        return false;
122}
123
124function auth_fblogin_formulaire_login($flux){
125        include_spip('inc/fblogin');
126        $flux['data'] = fblogin_login_form($flux['data'],$flux['args']['contexte']);
127        return $flux;
128}
129
130
131?>
Note: See TracBrowser for help on using the repository browser.