diff --git a/balise/login_saml.php b/balise/login_saml.php index 0d44d22..031705a 100644 --- a/balise/login_saml.php +++ b/balise/login_saml.php @@ -46,6 +46,18 @@ function balise_LOGIN_SAML_dyn() else return login_saml_successfull(); } +function generate_password($length = 15) { + $chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789*\_-~#/!+={[]}()&$%'; + $count = mb_strlen($chars); + + for ($i = 0, $result = ''; $i < $length; $i++) { + $index = rand(0, $count - 1); + $result .= mb_substr($chars, $index, 1); + } + + return $result; +} + function login_saml_successfull() { $simplesaml = new SimpleSAML_Auth_Simple('default-sp'); @@ -74,18 +86,22 @@ function login_saml_successfull() spip_log("[auth_saml] display name : $display_name and email : $email"); spip_query("UPDATE spip_auteurs SET nom=" . _q($display_name) . ", email=" . _q($email) . " WHERE login="._q($login)); - $session = charger_fonction('session', 'inc'); - $cookie_session = $session($row_auteur); - spip_setcookie('spip_session', $cookie_session); - $redirect = _DIR_RESTREINT_ABS. "?bonjour=oui"; - redirige_par_entete($redirect); } else { - // Logout SAML au cas ou - spip_log("[auth_saml] logout"); - $simplesaml->logout(); + spip_log("[auth_saml] creating user [" . $login . "]"); + spip_log("[auth_saml] display name : $display_name and email : $email"); + $pass = generate_password(); + spip_query("INSERT INTO spip_auteurs (nom, login, email, pass, statut) VALUES ('$display_name', '$login', '$email', '$pass', '1comite')"); + // Si l'utilisateur figure deja dans la base, y recuperer les infos + $result = spip_query("SELECT * FROM spip_auteurs WHERE login=" ._q($login). " AND statut<>'5poubelle'" ); + $row_auteur = spip_fetch_array($result); } + $session = charger_fonction('session', 'inc'); + $cookie_session = $session($row_auteur); + spip_setcookie('spip_session', $cookie_session); + $redirect = _DIR_RESTREINT_ABS. "?bonjour=oui"; + redirige_par_entete($redirect); } ?>