source: spip-zone/_plugins_/authentification/openid/openid_pipelines.php @ 32364

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

inscription en 2.0 :

  • enregister l'openid avec un pipeline sur formulaire_traiter
  • refuser de faire la premiere connexion avec openid
File size: 4.9 KB
Line 
1<?php
2/**
3 * Plugin OpenID
4 * Licence GPL (c) 2007-2009 Edouard Lafargue, Mathieu Marcillaud, Cedric Morin, Fil
5 *
6 */
7
8/**
9 * ajouter un champ openID sur le formulaire CVT editer_auteur
10 *
11 * @param array $flux
12 * @return array
13 */
14function openid_editer_contenu_objet($flux){
15        if ($flux['args']['type']=='auteur') {
16                include_spip('public/assembler');
17                $openid = recuperer_fond('formulaires/inc-openid', $flux['args']['contexte']);
18                $flux['data'] = preg_replace('%(<li class="editer_email(.*?)</li>)%is', '$1'."\n".$openid, $flux['data']);
19        }
20        return $flux;
21}
22
23/**
24 * Ajouter la valeur openID dans la liste des champs de la fiche auteur
25 *
26 * @param array $flux
27 */
28function openid_formulaire_charger($flux){
29        if ($flux['args']['form']=='editer_auteur'){
30                $flux['data']['openid'] = ''; // un champ de saisie openid !
31                if ($id_auteur = intval($flux['data']['id_auteur']))
32                        $flux['data']['openid'] = sql_getfetsel('openid','spip_auteurs','id_auteur='.intval($id_auteur));
33        }
34        if ($flux['args']['form']=='inscription'){
35                $flux['data']['_forcer_request'] = true; // forcer la prise en compte du post
36                $flux['data']['url_openid'] = ''; // un champ de saisie openid !
37                $flux['data']['openid'] = ''; // une url openid a se passer en hidden
38                if ($erreur = _request('var_erreur'))
39                        $flux['data']['message_erreur'] = _request('var_erreur');
40                elseif(_request('openid') AND (!_request('nom_inscription') OR !_request('mail_inscription')))
41                        $flux['data']['message_erreur'] = _T('openid:erreur_openid_info_manquantes');
42        }
43        return $flux;
44}
45
46
47/**
48 * Verifier la saisie de l'url openID sur la fiche auteur
49 *
50 * @param array $flux
51 */
52function openid_formulaire_verifier($flux){
53        if ($flux['args']['form']=='editer_auteur'){
54                if ($openid = _request('openid')){
55                        include_spip('inc/openid');
56                        $openid = nettoyer_openid($openid);
57                        if (!verifier_openid($openid))
58                                $flux['data']['openid']=_T('openid:erreur_openid');
59                }
60        }
61        if ($flux['args']['form']=='inscription'){
62                if ($idurl = _request('url_openid')){
63                        include_spip('inc/openid');
64                        if (!is_openid($idurl)
65                                OR !$idurl = nettoyer_openid($idurl)
66                                OR !verifier_openid($idurl))
67                                $flux['data']['url_openid']=_T('openid:erreur_openid');
68                        else {
69                                // openid valide, il faut renvoyer vers le fournisseur pour identification
70                                // et recup au retour du nom et de l'email
71                                $retour = openid_url_retour_insc($idurl,self());
72                                // lancer l'identification chez openid
73                                $erreur = demander_authentification_openid($idurl, $retour);
74                                // si on arrive ici : erreur
75                                $flux['data']['url_openid']=$erreur;
76                        }
77                }
78        }
79        return $flux;
80}
81
82
83/**
84 * Enregistrer l'openid dans la base au traitement du formulaire d'inscription
85 * utilise en 2.0 uniquement
86 *
87 * @param array $flux
88 * @return array
89 */
90function openid_formulaire_traiter($flux){
91        if ($flux['args']['form']=='inscription'){
92                $nom = _request('nom_inscription');
93                $mail = _request('mail_inscription');
94                $openid = _request('openid');
95                if (function_exists('test_inscription'))
96                        $f = 'test_inscription';
97                else    $f = 'test_inscription_dist';
98                $desc = $f($mode, $mail, $flux['args']['args'][0], $flux['args']['args'][2]);
99                if (is_array($desc)
100                  AND $mail = $desc['email']){
101                        include_spip('base/abstract_sql');
102                        sql_updateq("spip_auteurs", array('openid'=>$openid),"statut='nouveau' AND email=" . sql_quote($mail));
103                }
104        }
105        return $flux;
106}
107
108
109/**
110 * ajouter l'open_id soumis lors de la soumission du formulaire CVT editer_auteur
111 * et lors de l'update d'un auteur a l'inscription en 2.1
112 *
113 * @param array $flux
114 * @return array
115 */
116function openid_pre_edition($flux){
117        if ($flux['args']['table']=='spip_auteurs') {
118                if (!is_null($openid = _request('openid'))) {
119                        include_spip('inc/openid');
120                        $flux['data']['openid'] = nettoyer_openid($openid);
121                }
122        }
123        return $flux;
124}
125
126/**
127 * Afficher l'openid sur la fiche de l'auteur
128 * @param array $flux
129 */
130function openid_afficher_contenu_objet($flux){
131        if ($flux['args']['type']=='auteur'
132                AND $id_auteur = $flux['args']['id_objet']
133                AND $openid = sql_getfetsel('openid','spip_auteurs','id_auteur='.intval($id_auteur))
134        ){
135                $flux['data'] .= propre("<div><img src='".find_in_path('images/login_auth_openid.gif')
136                        ."' alt='"._T('openid:openid')."' width='16' height='16' />"
137                        . " [->$openid]</div>");
138
139        }
140
141        return $flux;
142}
143
144/**
145 * Afficher l'openid sur le formulaire de login
146 *      ->Utilise uniquement pour spip 2.0.x
147 * et sur le form inscription
148 *
149 * @param <type> $flux
150 * @return <type>
151 */
152function openid_recuperer_fond($flux) {
153        if ($flux['args']['fond']=='formulaires/login' AND version_compare($GLOBALS['spip_version_branche'],"2.1.0 dev","<")){
154                include_spip('inc/openid');
155                $flux['data']['texte'] = openid_login_form($flux['data']['texte'],$flux['data']['contexte']);
156        }
157        if ($flux['args']['fond']=='formulaires/inscription'){
158
159                $insc = recuperer_fond('formulaires/inc-inscription-openid',$flux['data']['contexte']);
160                $flux['data']['texte'] = str_replace('<ul',$insc . '<ul',$flux['data']['texte']);
161
162        }
163        return $flux;
164}
165
166?>
Note: See TracBrowser for help on using the repository browser.