[ Index ]
 

Code source de SPIP Agora 1.4

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/Agora1-4/ -> spip_cookie.php (source)

   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&eacute;, <a href='" . $cible->getUrl(). "'>continuer</a>.</body></html>";
 303  }
 304  ?>


Généré le : Sat Feb 24 14:40:03 2007 par Balluche grâce à PHPXref 0.7