source: spip-zone/_plugins_/connecteur/trunk/action/connexion.php @ 101437

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

spip_logger les erreurs de connexion Facebook

File size: 2.3 KB
Line 
1<?php
2
3if (!defined('_ECRIRE_INC_VERSION')) {
4        return;
5}
6
7/**
8 * Action de connexion
9 *
10 * @param string $arg Le nom du service
11 * @access public
12 */
13function action_connexion_dist($arg = null) {
14        if (is_null($arg)) {
15                $securiser_action = charger_fonction('securiser_action', 'inc');
16                $arg = $securiser_action();
17        }
18
19        include_spip('connecteur_fonctions');
20        include_spip('inc/token');
21
22        // Type de connection à effectuer
23        $type = $arg;
24
25        // Charger la configuration de la connection
26        $connecteur_config = charger_fonction($type.'_config', 'connecteur');
27        $config = $connecteur_config();
28
29        // Type de connecteur "token"
30        if ($config['connecteur'] == 'token') {
31                // Retrouver le token en executant la fonction renseignée dans la config
32                if (isset($config['charger_fichier'])) {
33                        include_spip($config['charger_fichier']);
34                }
35                $trouver_token = $config['trouver_token'];
36                $token = $trouver_token();
37
38                // Maintenant qu'on a le token du service, on va demander les
39                // informations de connexion
40                // Ce tableau doit à minima contenir un champ nom et un champ email
41                $info = charger_fonction($type.'_info', 'connecteur');
42                $auteur_info = $info($token);
43
44                // Envoyer au pipeline les informations de la personne
45                $auteur_info = pipeline('pre_connecteur', $auteur_info);
46                // Est-ce que l'email est déjà présent dans la base de donnée ?
47                if (empty($auteur_info['email'])) {
48                        spip_log('aucun email fourni par Facebook', 'facebook'._LOG_ERREUR);
49                        spip_log($auteur_info, 'facebook'._LOG_ERREUR);
50                } else {
51                        $verifier = charger_fonction('verifier', 'inc');
52                        if (!$verifier($auteur_info['email'], 'email', array('disponible' => true))) {
53                                // L'auteur n'est pas encore dans la base de donnée : on le crée
54                                $auteur = connecteur_creer_auteur($auteur_info);
55
56                                // On enregistre le token
57                                connecteur_save_token($auteur['id_auteur'], $type, $token);
58
59                                // On va update la source de l'auteur
60                                include_spip('action/editer_auteur');
61                                auteur_modifier($auteur['id_auteur'], array('source' => $type));
62
63                                // Et enfin on connecte la personne
64                                connecteur_connecter($auteur);
65                        } else {
66                                // Sinon, on connecte l'auteur
67                                $auteur = connecteur_connecter($auteur_info);
68                                connecteur_save_token($auteur['id_auteur'], $type, $token);
69                        }
70                }
71                // Envoyer aux pipelines
72                $desc = pipeline('post_connecteur', array('auteur' => $auteur, 'info' => $auteur_info));
73        }
74}
Note: See TracBrowser for help on using the repository browser.