Changeset 47334 in spip-zone


Ignore:
Timestamp:
May 2, 2011, 2:40:54 PM (10 years ago)
Author:
cam.lafit@…
Message:

Authentifier un compte dès sa création dans Thelia

  • Si la config SPIP est sur authentification unique et Thelia fait l'authentification sur création alors :
    • on permet à SPIP de créer le nouveau compte et de charger une session initiale
  • A noter un debut de fonction propre pour la creation du compte sous SPIP
  • La gestion de d'authenfication sur création est défini directement dans le tampon mémoire, généralisation possible par passage en fonction/pipeline (à voir si un interet existe)
Location:
_plugins_/plugin-thelia
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/plugin-thelia/auth/thelia.php

    r40278 r47334  
    125125}
    126126
     127/*
     128        $auteur = array(login,pass,client)
     129*/
     130function creer_auteur_thelia($auteur) {
     131
     132        //Empecher un doublon
     133        if ($result = sql_fetsel("*", "spip_auteurs", "login=" . sql_quote($auteur['login']) . " AND source='thelia'")) {
     134              spip_log("l'utilisateur $login est déjà enregistré dans spip tout va bien",'theliaob');
     135              return $result;
     136        }
     137       
     138        //charger le support thelia     
     139        ob_start();
     140                include_once('fonctions/moteur.php');
     141        ob_end_clean();
     142
     143        //Empecher un doublon
     144        if ($result = sql_fetsel("*", "spip_auteurs", "login=" . sql_quote($auteur['client']->email) . " AND source='thelia'")) {
     145              spip_log("l'utilisateur $login est déjà enregistré dans spip tout va bien",'theliaob');
     146              return $result;
     147        }
     148
     149        //Tester la présence dans thelia
     150        $client = $auteur['client'];
     151        if (!$auteur['client']) {
     152                $client = New Client();
     153                if (!$client->charger($auteur['login'], $auteur['pass']))
     154                        return array();
     155        }
     156
     157        //Valeur par défaut
     158        if (!$statut = $GLOBALS['thelia_statut_nouvel_auteur']) {
     159                spip_log('erreur pas de statut defini par defaut','theliaob');
     160                return array();
     161        }
     162
     163        spip_log("enregistrement auteur",'theliaob');
     164        // Recuperer les donnees de l'auteur
     165        // Convertir depuis UTF-8 (jeu de caracteres par defaut)
     166        include_spip('inc/charsets');
     167        $nom = $client->nom.' '.$client->prenom;
     168        $login = $email = $client->email;
     169        $bio = '';
     170        $n = sql_insertq(
     171                'spip_auteurs',
     172                array(
     173                        'source' => 'thelia',
     174                        'nom' => $nom,
     175                        'login' => $login,
     176                        'email' => $email,
     177                        'bio' => $bio,
     178                        'statut' => $statut,
     179                        'pass' => '')
     180                );
     181        spip_log('Auteur depuis thelia d\'id '.$n,'theliaob');
     182
     183        return sql_fetsel("*", "spip_auteurs", "id_auteur=$n");
     184}
    127185?>
  • _plugins_/plugin-thelia/spip_thelia_fonct.php

    r39951 r47334  
    149149        //si version >= 1.3.4 : plus de surcharge dans le plugin, on appelle directement le moteur de Th�lia
    150150        include_once("fonctions/moteur.php");
     151
     152        //Connexion à SPIP à la création du compte Thelia
     153        if ($_GET['page'] == 'nouveau' || $_GET['page_thelia'] == 'nouveau') {
     154                if ($_SESSION['navig']->connecte == 1 && lire_config("spip_thelia/auth_unique_spip_thelia","non")=="oui") ) {
     155                        include_spip('auth/thelia');
     156                        $auteur = creer_auteur_thelia(
     157                                array(
     158                                        'login'=>'',
     159                                        'pass'=>'',
     160                                        'client'=>$_SESSION['navig']->client
     161                                )
     162                        );
     163                        $session = charger_fonction('session','inc');
     164                        $session($auteur);
     165                }
     166        }
     167
    151168       
    152169        $texte = ob_get_contents();
Note: See TracChangeset for help on using the changeset viewer.