source: spip-zone/_plugins_/authentification/openid/spip_2_0/action/controler_openid.php @ 32341

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

calquer le process de retour sur la version 2.1, en adaptant a l'absence d'api auth

File size: 2.0 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 * Utilisation: ce plugin active la reconnaissance des OpenID dans le
10 * formulaire de Login. Si un OpenID est identifié, il lance l'authentification
11 * puis, en cas de succès, recherche si l'OpenID en question correspond à un utilisateur
12 * existant sur le site. Pour cela, il recherche un utilisateur dont le champ 'url_site'
13 * est égal à cet OpenID. Si aucun n'existe, erreur. Sinon il écrit le cookie de session
14 * et redirige vers la première page
15 *
16 * Sécurité: a priori, pas de dangers majeurs: l'utilisateur décide lui-même d'indiquer son
17 * OpenID, si il met un OpenID non fiable ou appartenant à qqun d'autre, il donne effectivement
18 * accès à son compte par cette autre personne, mais c'est équivalent à donner son mot de passe
19 * à une tierce personn.
20 *
21 * Pour l'instant, ce plugin ne désactive pas le login/mot de passe qui reste compatible avec
22 * le système actuel, au cas où l'IDP OpenID n'est pas dispo (ce qui peut arriver).
23 *
24 ****/
25
26include_spip('inc/actions');
27include_spip('inc/cookie');
28
29
30// Cette fonction est appelee lors du retour de l'authentification OpenID
31// Elle doit verifier si l'authent est OK, puis chercher l'utilisateur
32// associé dans spip (champ openid dans la base), et finalement l'authentifier
33// en creant le bon cookie.
34
35function action_controler_openid_dist() {
36
37        $securiser_action = charger_fonction('securiser_action', 'inc');
38        $arg = $securiser_action();
39
40        if (!$login = $arg) {
41                spip_log("action_controler_openid_dist $arg pas compris");
42        }
43        else {
44                include_spip('auth/openid');
45                $res = auth_openid_terminer_identifier_login($login);
46
47                if (is_string($res)){ // Erreur
48                        $redirect = _request('redirect');
49                        $redirect = parametre_url($redirect,'var_erreur',$res);
50                        include_spip('inc/headers');
51                        redirige_par_entete($redirect);
52                }
53
54                // sinon on loge l'auteur identifie, et on finit (redirection automatique)
55                auth_loger($res);
56        }
57
58}
59
60?>
Note: See TracBrowser for help on using the repository browser.