Changeset 32071 in spip-zone


Ignore:
Timestamp:
Oct 13, 2009, 10:35:48 AM (10 years ago)
Author:
cedric@…
Message:

on peut s'identifier openid en indiquant juste son login spip et sans mot de passe, du moment qu'on a renseigne son openid dans la table des auteurs

Location:
_plugins_/authentification/openid
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/authentification/openid/auth/openid.php

    r32064 r32071  
    1616
    1717// http://doc.spip.org/@inc_auth_ldap_dist
    18 function auth_openid_dist ($login) {
     18function auth_openid_dist ($login, $pass, $md5pass="", $md5next="") {
    1919
    2020        // il faut un login non vide et qui contient au moins un point
    2121        // car c'est cense etre une url
    22         if (!$login
    23                 OR !preg_match(';[.];',$login)) return false;
     22        if (!$login) return false;
     23        $result = false;
     24       
     25        // il faut au moins que ca ressemble un peu a une url !
     26        if (preg_match(';[.];',$login)){
     27                // si pas de protocole, mettre http://
     28                if (!preg_match(';^[a-z]{3,6}://;i',$login))
     29                        $login = "http://".$login;
     30                $login = rtrim($login,'/');
    2431
    25         // si pas de protocole, mettre http://
    26         if (!preg_match(';^[a-z]{3,6}://;i',$login))
    27                 $login = "http://".$login;
     32                // Si l'utilisateur figure deja dans la base, y recuperer les infos
     33                $result = sql_fetsel("*", "spip_auteurs", array("statut!=".sql_quote("5poubelle") , "openid=" . sql_quote($login)));
     34        }
     35       
     36        // encore plus fort :
     37        // si le login est un login spip mais qu'on arrive la,
     38        // et qu'il a pas fournit de pass
     39        // dans ce cas, si l'utilisateur a un openid on peut tenter de la loger avec !
     40        if (!$result AND !$pass AND !$md5pass){
     41                // Si l'utilisateur figure dans la base, y recuperer les infos
     42                $result = sql_fetsel("*", "spip_auteurs", array("statut!=".sql_quote("5poubelle") , "login=" . sql_quote($login)));
     43                if (!$result['openid'])
     44                        $result = false;
     45        }
    2846
    29         // Si l'utilisateur figure deja dans la base, y recuperer les infos
    30         $result = sql_fetsel("*", "spip_auteurs", array("statut!=".sql_quote("5poubelle") , "openid=" . sql_quote($login)));
    31        
    3247        return is_array($result) ? $result : array();
    3348}
  • _plugins_/authentification/openid/formulaires/login/verifier.php

    r25184 r32071  
    6161                        // on demande l'authentification
    6262                        $auth_openid = charger_fonction('openid','auth');
    63                         if ($auth_openid($session_login)) {
     63                        if ($auteur = $auth_openid($session_login,$session_password,$session_md5pass,$session_md5next)) {
    6464                                // * Si l'openid existe, la procedure continue en redirigeant
    6565                                // vers le fournisseur d'identite. En cas d'erreur, il y a une redirection de faite
     
    6868                                // pour d'autres methodes d'identification
    6969                                include_spip('inc/openid');
    70                                 $erreurs_openid = demander_authentification_openid($session_login, $cible);
     70                                $erreurs_openid = demander_authentification_openid($auteur['openid'], $cible);
    7171                                // potentiellement, on arrive ici avec une erreur si l'openid donne n'existe pas
    7272                        }
Note: See TracChangeset for help on using the changeset viewer.