add user creation

This commit is contained in:
Jérôme Schneider 2013-06-07 19:47:53 +02:00
parent 1b99445f0d
commit 554b3d9748
1 changed files with 24 additions and 8 deletions

View File

@ -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);
}
?>