isAuthenticated()) { spip_log("[auth_saml] required auth"); $simplesaml->requireAuth(); } else return login_saml_successfull(); } function login_saml_successfull() { $simplesaml = new SimpleSAML_Auth_Simple('default-sp'); spip_log("[auth_saml] Traitement login SAML"); $attributes = $simplesaml->getAttributes(); spip_log("ATTRIBUTES: " . print_r($attributes, true)); $login = $attributes['uid'][0]; $first_name = $attributes['gn'][0]; $last_name = $attributes['sn'][0]; $email = $attributes['email'][0]; $display_name = $first_name . ' ' . $last_name; spip_log("[auth_saml] authentification reussi pour l'utilisateur =".$login); // 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); spip_log("[auth_saml] attribus utilisateur =".$row_auteur['login']); if ($row_auteur) { $GLOBALS['auteur_session'] = $row_auteur; spip_log("[auth_saml] updating user [" . $login . "] attributes : ". $display_name); 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(); } } ?>