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

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

PSR SPIP

File size: 2.2 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
47                // Est-ce que l'email est déjà présent dans la base de donnée ?
48                $verifier = charger_fonction('verifier', 'inc');
49                if (!$verifier($auteur_info['email'], 'email', array('disponible' => true))) {
50                        // L'auteur n'est pas encore dans la base de donnée : on le crée
51                        $auteur = connecteur_creer_auteur($auteur_info);
52
53                        // On enregistre le token
54                        connecteur_save_token($auteur['id_auteur'], $type, $token);
55
56                        // On va update la source de l'auteur
57                        include_spip('action/editer_auteur');
58                        auteur_modifier($auteur['id_auteur'], array('source' => $type));
59
60                        // Et enfin on connecte la personne
61                        connecteur_connecter($auteur);
62                } else {
63                        // Sinon, on connecte l'auteur
64                        $auteur = connecteur_connecter($auteur_info);
65                        connecteur_save_token($auteur['id_auteur'], $type, $token);
66                }
67
68                // Envoyer aux pipelines
69                $desc = pipeline('post_connecteur', array('auteur' => $auteur, 'info' => $auteur_info));
70        }
71}
Note: See TracBrowser for help on using the repository browser.