[ Index ] |
|
Code source de SPIP Agora 1.4 |
1 <?php 2 /******* Fichier Ajout? EXTRANET guillaume.grason@diplomatie.gouv.fr *******/ 3 require_once (dirname(__FILE__)."/ecrire/include/bd/inc_extranaute_factory.php"); 4 require_once (dirname(__FILE__)."/ecrire/include/authorization/inc_authorization_factory.php"); 5 6 include ("ecrire/inc_version.php"); 7 8 include_ecrire ("inc_meta.php"); 9 include ("inc-session.php"); 10 11 // determiner ou l'on veut retomber 12 if ($url) 13 $cible = new Link($url); 14 else 15 $cible = new Link(); 16 17 // rejoue le cookie pour renouveler spip_session_ex 18 if ($change_session == 'oui') { 19 if (verifier_session_ex($spip_session_ex)) { 20 // Attention : seul celui qui a le bon IP a le droit de rejouer, 21 // ainsi un eventuel voleur de cookie ne pourrait pas deconnecter 22 // sa victime, mais se ferait deconnecter par elle. 23 if ($extranaute_session['hash_env'] == hash_env()) { 24 $extranaute_session['ip_change'] = false; 25 $cookie = creer_cookie_session_ex($extranaute_session); 26 supprimer_session_ex($spip_session_ex); 27 spip_setcookie('spip_session_ex', $cookie); 28 } 29 @header('Content-Type: image/gif'); 30 @header('Expires: 0'); 31 @header("Cache-Control: no-store, no-cache, must-revalidate"); 32 @header('Pragma: no-cache'); 33 @header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); 34 @readfile('ecrire/img_pack/rien.gif'); 35 exit; 36 } 37 } 38 39 // tentative de logout 40 if ($logout) { 41 include ("inc-session.php"); 42 verifier_visiteur_ex(); 43 if ($extranaute_session['login'] == $logout) { 44 if ($spip_session_ex) { 45 supprimer_session_ex( $spip_session_ex ); 46 zap_sessions_ex($extranaute_session['id_extranaute'], true); 47 spip_setcookie('spip_session_ex', $spip_session_ex, time() - 3600 * 24); 48 } 49 unset ($extranaute_session); 50 } 51 52 if (!$url) 53 @Header("Location: ./login_extranet.php"); 54 else 55 @Header("Location: $url"); 56 exit; 57 } 58 59 // Tentative de login 60 unset ($cookie_session); 61 62 if ($essai_login == "oui") { 63 64 // Recuperer le login en champ hidden 65 if ($session_login_hidden AND !$session_login) 66 $session_login = $session_login_hidden; 67 68 $login = $session_login; 69 $pass = $session_password; 70 71 // Recuperer le mot de passe en champ hidden 72 if ($session_password_md5) { // mot passe en md5 73 $md5pass = $session_password_md5; 74 $md5next = $next_session_password_md5; 75 } 76 else if ($session_password) { // mot passe en clair 77 $extranauteMetier = &recuperer_instance_extranaute(); 78 $allExtranautes = $extranauteMetier->getAllForLogin($login); 79 if(PEAR::isError($allExtranautes)) { 80 die($allExtranautes->getMessage()); 81 } 82 83 if (list(,$monExtranaute) = each($allExtranautes)) { 84 $md5pass = md5($session_password); 85 $md5next = md5($session_password); 86 } 87 } 88 89 // Essayer differentes methodes d'authentification 90 include (dirname(__FILE__)."/ecrire/inc_auth_extranet.php"); 91 $classe_auth = "Auth_extranet"; 92 $auth = new $classe_auth; 93 if ($auth->init()) { 94 $ok = $auth->verifier_challenge_md5($login, $md5pass, $md5next); 95 if (!$ok && $session_password) $ok = $auth->verifier($login, $session_password); 96 } 97 98 if ($ok) $ok = $auth->lire(); 99 100 if ($ok) { 101 $auth->activer(); 102 $extranauteMetier = &recuperer_instance_extranaute(); 103 $allExtranautes = $extranauteMetier->getAllForLogin($login); 104 if(PEAR::isError($allExtranautes)) { 105 die($allExtranautes->getMessage()); 106 } 107 108 if (list(,$monExtranaute) = each($allExtranautes)) { 109 110 //Creation du tableau qui va bien 111 $tab['id_extranaute'] = $monExtranaute->getExtranauteId(); 112 $tab['nom'] = $monExtranaute->getNom(); 113 $tab['login'] = $monExtranaute->getLogin(); 114 $tab['email'] = $monExtranaute->getEmail(); 115 $cookie_session = creer_cookie_session_ex($tab); 116 } 117 } 118 else { 119 $cible = new Link("./login_extranet.php"); 120 $cible->addVar('var_login', $login); 121 if ($session_password || $session_password_md5) 122 $cible->addVar('var_erreur', 'pass'); 123 $cible->addVar('var_url', urldecode($url)); 124 } 125 } 126 127 128 // cookie de session ? 129 if ($cookie_session) { 130 if ($session_remember == 'oui') 131 spip_setcookie('spip_session_ex', $cookie_session, time() + 3600 * 24 * 14); 132 else 133 spip_setcookie('spip_session_ex', $cookie_session); 134 } 135 136 137 138 // Redirection 139 // Sous Apache, les cookies avec une redirection fonctionnent 140 // Sinon, on fait un refresh HTTP 141 if (ereg("^Apache", $SERVER_SOFTWARE)) { 142 @header("Location: " . $cible->getUrl()); 143 } 144 else { 145 @header("Refresh: 0; url=" . $cible->getUrl()); 146 echo "<html><head>"; 147 echo "<meta http-equiv='Refresh' content='0; url=".$cible->getUrl()."'>"; 148 echo "</head>\n"; 149 echo "<body>Si votre navigateur n'est pas redirigé, <a href='".$cible->getUrl()."'>continuer</a>.</body></html>"; 150 } 151 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sat Feb 24 14:40:03 2007 | par Balluche grâce à PHPXref 0.7 |