[ Index ] |
|
Code source de SPIP Agora 1.4 |
1 <?php 2 /***************************************************** 3 * This file is part of Agora, web based content management system. 4 * 5 * Agora is free software; you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation; version 2 of the License. 8 * 9 * Agora is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details (file "COPYING"). 13 * 14 * Copyright © Arnaud Martin, Antoine Pitrou et Philippe Rivière. 15 * List of authors detailed in "copyright_fr.html" file. 16 * E-mail : agora@sig.premier-ministre.gouv.fr 17 * Web site : http://www.agora.gouv.fr 18 *****************************************************/ 19 // Ajout Clever Age elebescond 20 require_once(dirname(__FILE__). "/ecrire/include/bd/inc_auteur_factory.php"); 21 22 require_once(dirname(__FILE__). "/ecrire/include/authorization/inc_authorization_factory.php"); 23 require_once(dirname(__FILE__). "/ecrire/include/bd/inc_profil_factory.php"); 24 // Fin ajout 25 26 include ("ecrire/inc_version.php"); 27 28 include_ecrire ("inc_meta.php"); 29 include_ecrire ("inc_session.php"); 30 31 // determiner ou l'on veut retomber 32 if ($url) 33 $cible = new Link($url); 34 else 35 $cible = new Link('ecrire/'); 36 37 // cas particulier, logout dans l'espace public 38 if ($logout_public) { 39 $logout = $logout_public; 40 if (!$url) 41 $url = 'index.php'; 42 } 43 44 // rejoue le cookie pour renouveler spip_session 45 if ($change_session == 'oui') { 46 if (verifier_session($spip_session)) { 47 // Attention : seul celui qui a le bon IP a le droit de rejouer, 48 // ainsi un eventuel voleur de cookie ne pourrait pas deconnecter 49 // sa victime, mais se ferait deconnecter par elle. 50 if ($auteur_session['hash_env'] == hash_env()) { 51 $auteur_session['ip_change'] = false; 52 $cookie = creer_cookie_session($auteur_session); 53 supprimer_session($spip_session); 54 /********** Modification SPIP_COOKIE johnny.muller@ypok.com **********/ 55 spip_setcookie($GLOBALS['cookie_prefix']. '_session', $cookie); 56 //spip_setcookie('spip_session', $cookie); 57 /********** Fin Modification SPIP_COOKIE johnny.muller@ypok.com **********/ 58 } 59 60 @header('Content-Type: image/gif'); 61 @header('Expires: 0'); 62 @header("Cache-Control: no-store, no-cache, must-revalidate"); 63 @header('Pragma: no-cache'); 64 @header("Last-Modified: " . gmdate("D, d M Y H:i:s"). " GMT"); 65 @readfile('ecrire/img_pack/rien.gif'); 66 exit; 67 } 68 } 69 70 // tentative de connexion en auth_http 71 if ($essai_auth_http AND !$ignore_auth_http) { 72 include_local("inc-login.php"); 73 auth_http($cible, $essai_auth_http); 74 exit; 75 } 76 77 // tentative de logout 78 if ($logout) { 79 include_ecrire ("inc_session.php"); 80 verifier_visiteur(); 81 82 if ($auteur_session['login'] == $logout) { 83 //-----------Zone de modification Clever Age elebescond--------------- 84 $auteurMetier = &recuperer_instance_auteur(); 85 $loadOK = $auteurMetier->load($auteur_session['id_auteur']); 86 87 if (PEAR::isError($loadOK)) { 88 die($loadOK->getMessage()); 89 } 90 else { 91 $maDate = new Date(); 92 $maDate->subtractSeconds(intval(60 * 6)); 93 $auteurMetier->setEnLigne($maDate->getDate(DATE_FORMAT_ISO)); 94 //$auteurMetier->setEnLigne("DATE_SUB(NOW(),INTERVAL 6 MINUTE)"); 95 $updateOK = $auteurMetier->update(); 96 if (PEAR::isError($updateOK)) { 97 die($updateOK->getMessage()); 98 } 99 } 100 101 if ($spip_session) { 102 supprimer_session($spip_session); 103 zap_sessions($auteur_session['id_auteur'], true); 104 /********** Modification SPIP_COOKIE johnny.muller@ypok.com **********/ 105 spip_setcookie($GLOBALS['cookie_prefix']. '_session', $spip_session, time() - 3600 * 24); 106 //spip_setcookie('spip_session', $spip_session, time() - 3600 * 24); 107 /********** Fin Modification SPIP_COOKIE johnny.muller@ypok.com **********/ 108 } 109 110 if ($PHP_AUTH_USER AND !$ignore_auth_http) { 111 include_local("inc-login.php"); 112 auth_http($cible, 'logout'); 113 } 114 unset($auteur_session); 115 } 116 117 // suppression du cache des rubriques 118 session_start(); 119 unset($_SESSION['AgoraRubriquesCache']); 120 121 if (!$url) // ecrire 122 @Header("Location: ./spip_login.php"); 123 else 124 @Header("Location: $url"); 125 exit; 126 } 127 128 // en cas de login sur bonjour=oui, on tente de poser un cookie 129 // puis de passer a spip_login qui diagnostiquera l'echec de cookie 130 // le cas echeant. 131 if ($test_echec_cookie == 'oui') { 132 /********** Modification SPIP_COOKIE johnny.muller@ypok.com **********/ 133 spip_setcookie($GLOBALS['cookie_prefix']. '_session', 'test_echec_cookie'); 134 //spip_setcookie('spip_session', 'test_echec_cookie'); 135 /********** Fin Modification SPIP_COOKIE johnny.muller@ypok.com **********/ 136 $link = new Link("spip_login.php?var_echec_cookie=oui"); 137 $link->addVar("var_url", $cible->getUrl()); 138 @header("Location: " . $link->getUrl()); 139 exit; 140 } 141 142 // Tentative de login 143 unset($cookie_session); 144 145 if ($essai_login == "oui") { 146 147 // Recuperer le login en champ hidden 148 if ($session_login_hidden AND !$session_login) 149 $session_login = $session_login_hidden; 150 151 $login = $session_login; 152 $pass = $session_password; 153 154 // Recuperer le mot de passe en champ hidden 155 if ($session_password_md5) { // mot passe en md5 156 $md5pass = $session_password_md5; 157 $md5next = $next_session_password_md5; 158 } 159 else if ($session_password) { // mot passe en clair 160 //-----------Zone de modification Clever Age elebescond--------------- 161 $auteurMetier = &recuperer_instance_auteur(); 162 /********Modification Authorization elebescond@clever-age.com***************************/ 163 $profilMetier = &recuperer_instance_profil(); 164 $monProfil = $profilMetier->getProfilForIntitule('texte_statut_poubelle'); 165 166 if (PEAR::isError($monProfil)) { 167 die($monProfil->getMessage()); 168 } 169 170 //echo 'toto'; 171 $allAuteurs = $auteurMetier->getAllForLoginAndNotProfil($login, $monProfil->getPoids()); 172 /* 173 $allAuteurs = $auteurMetier->getAllForLoginAndNotStatut($login, '5poubelle'); 174 */ 175 /*****************FIN modif authorization***********************************************/ 176 if (PEAR::isError($allAuteurs)) { 177 die($allAuteurs->getMessage()); 178 } 179 if (list(, $monAuteur) = each($allAuteurs)) { 180 //var_dump($monAuteur); 181 $md5pass = md5($monAuteur->getAleaActuel(). $session_password); 182 $md5next = md5($monAuteur->getAleaFutur(). $session_password); 183 } 184 } 185 186 // Essayer differentes methodes d'authentification 187 $auths = array('spip'); 188 189 if ($ldap_present) 190 $auths[] = 'ldap'; 191 192 $ok = false; 193 reset($auths); 194 195 while (list(, $nom_auth) = each($auths)) { 196 include_ecrire("inc_auth_" . $nom_auth . ".php"); 197 $classe_auth = "Auth_" . $nom_auth; 198 $auth = new $classe_auth; 199 200 if ($auth->init()) { 201 $ok = $auth->verifier_challenge_md5($login, $md5pass, $md5next); 202 if (!$ok && $session_password) 203 $ok = $auth->verifier($login, $session_password); 204 } 205 if ($ok) 206 break; 207 } 208 209 if ($ok) 210 $ok = $auth->lire(); 211 if ($ok) { 212 $auth->activer(); 213 /********Modification Authorization elebescond@clever-age.com***************************/ 214 $authorization = &recuperer_instance_authorization('forcerCookie', $auth->auteurId, 215 array('login' => $auth->login)); 216 217 if ($authorization->isAuthorizedAction()) 218 /* 219 if ($auth->login AND $auth->statut == 'minirezo') // force le cookie pour les admins 220 */ 221 /*****************FIN modif authorization***********************************************/ 222 $cookie_admin = "@" . $auth->login; 223 224 //-----------Zone de modification Clever Age elebescond--------------- 225 $auteurMetier = &recuperer_instance_auteur(); 226 $allAuteurs = $auteurMetier->getAllForLogin($login); 227 228 if (PEAR::isError($allAuteurs)) { 229 die($allAuteurs->getMessage()); 230 } 231 232 if (list(, $monAuteur) = each($allAuteurs)) { 233 234 //Creation du tableau qui va bien 235 $tab['id_auteur'] = $monAuteur->getAuteurId(); 236 $tab['nom'] = $monAuteur->getNom(); 237 $tab['login'] = $monAuteur->getLogin(); 238 $tab['email'] = $monAuteur->getEmail(); 239 $tab['statut'] = $monAuteur->getStatut(); 240 $tab['profil'] = $monAuteur->getProfil(); 241 //$tab['ip_change'] = null; 242 //$tab['hash_env'] = hash_env(); 243 $cookie_session = creer_cookie_session($tab); 244 } 245 246 if (ereg("ecrire/", $cible->getUrl())) { 247 $cible->addVar('bonjour', 'oui'); 248 } 249 } 250 else { 251 if (ereg("ecrire/", $cible->getUrl())) { 252 $cible = new Link("./spip_login.php"); 253 } 254 255 $cible->addVar('var_login', $login); 256 257 //echo $session_password; 258 if ($session_password || $session_password_md5) 259 $cible->addVar('var_erreur', 'pass'); 260 $cible->addVar('var_url', urldecode($url)); 261 } 262 } 263 264 // cookie d'admin ? 265 if ($cookie_admin == "non") { 266 spip_setcookie('spip_admin', $spip_admin, time() - 3600 * 24); 267 $cible->delVar('var_login'); 268 $cible->addVar('var_login', '-1'); 269 } 270 else if ($cookie_admin AND $spip_admin != $cookie_admin) { 271 spip_setcookie('spip_admin', $cookie_admin, time() + 3600 * 24 * 14); 272 } 273 274 // cookie de session ? 275 if ($cookie_session) { 276 /********** Modification SPIP_COOKIE johnny.muller@ypok.com **********/ 277 if ($session_remember == 'oui') 278 spip_setcookie($GLOBALS['cookie_prefix']. '_session', $cookie_session, time() + 3600 * 24 * 14); 279 else 280 spip_setcookie($GLOBALS['cookie_prefix']. '_session', $cookie_session); 281 /* 282 if ($session_remember == 'oui') 283 spip_setcookie('spip_session', $cookie_session, time() + 3600 * 24 * 14); 284 else 285 spip_setcookie('spip_session', $cookie_session); 286 */ 287 /********** Fin Modification SPIP_COOKIE johnny.muller@ypok.com **********/ 288 } 289 290 // Redirection 291 // Sous Apache, les cookies avec une redirection fonctionnent 292 // Sinon, on fait un refresh HTTP 293 if (ereg("^Apache", $SERVER_SOFTWARE)) { 294 //echo $cible->getUrl(); 295 @header("Location: " . $cible->getUrl()); 296 } 297 else { 298 @header("Refresh: 0; url=" . $cible->getUrl()); 299 echo "<html><head>"; 300 echo "<meta http-equiv='Refresh' content='0; url=" . $cible->getUrl(). "'>"; 301 echo "</head>\n"; 302 echo "<body>Si votre navigateur n'est pas redirigé, <a href='" . $cible->getUrl(). "'>continuer</a>.</body></html>"; 303 } 304 ?>
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 |