[SPIP][PLUGINS] v3.0-->v3.2
[lhc/web/www.git] / www / ecrire / action / cookie.php
index 56c2182..fe01481 100644 (file)
@@ -3,24 +3,40 @@
 /***************************************************************************\
  *  SPIP, Systeme de publication pour l'internet                           *
  *                                                                         *
- *  Copyright (c) 2001-2016                                                *
+ *  Copyright (c) 2001-2017                                                *
  *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
  *                                                                         *
  *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
  *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
 \***************************************************************************/
 
-if (!defined('_ECRIRE_INC_VERSION')) return;
+/**
+ * Gestion de l'action cookie
+ *
+ * @package SPIP\Core\Inscription
+ */
+
+if (!defined('_ECRIRE_INC_VERSION')) {
+       return;
+}
 
 include_spip('inc/actions');
 include_spip('inc/cookie');
 
-// http://doc.spip.org/@action_cookie_dist
-function action_cookie_dist($set_cookie_admin=null, $change_session = null) {
+/**
+ * Cette fonction traite les cookies posés au moment de l'authentification standard
+ * ou vérifie que l'authentification HTTP est correcte
+ *
+ * @global bool ignore_auth_http
+ * @param string|null $set_cookie_admin
+ * @param string|null $change_session
+ * @return void
+ */
+function action_cookie_dist($set_cookie_admin = null, $change_session = null) {
        $redirect_echec = $redirect = null;
        $test_echec_cookie = null;
        $url = "";
-       if (is_null($set_cookie_admin)){
+       if (is_null($set_cookie_admin)) {
                $set_cookie_admin = _request('cookie_admin');
                $change_session = _request('change_session');
                $test_echec_cookie = _request('test_echec_cookie');
@@ -30,10 +46,11 @@ function action_cookie_dist($set_cookie_admin=null, $change_session = null) {
                $redirect = $url ? $url : generer_url_ecrire('accueil');
                $redirect_echec = _request('url_echec');
                if (!isset($redirect_echec)) {
-                       if (strpos($redirect,_DIR_RESTREINT_ABS)!==false)
-                               $redirect_echec = generer_url_public('login','',true);
-                       else
+                       if (strpos($redirect, _DIR_RESTREINT_ABS) !== false) {
+                               $redirect_echec = generer_url_public('login', '', true);
+                       } else {
                                $redirect_echec = $redirect;
+                       }
                }
        }
 
@@ -48,52 +65,52 @@ function action_cookie_dist($set_cookie_admin=null, $change_session = null) {
        }
 
        // tentative de connexion en auth_http
-       if (_request('essai_auth_http') AND !$GLOBALS['ignore_auth_http']) {
+       if (_request('essai_auth_http') and !$GLOBALS['ignore_auth_http']) {
                include_spip('inc/auth');
                if (@$_SERVER['PHP_AUTH_USER']
-               AND @$_SERVER['PHP_AUTH_PW']
-               AND $auteur = lire_php_auth($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'])){
+                       and @$_SERVER['PHP_AUTH_PW']
+                       and $auteur = lire_php_auth($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'])
+               ) {
                        auth_loger($auteur);
-                       redirige_par_entete(parametre_url($redirect,'t',time(),'&'));
-               }
-               else {
+                       redirige_par_entete(parametre_url($redirect, 't', time(), '&'));
+               } else {
                        ask_php_auth(_T('info_connexion_refusee'),
-                            _T('login_login_pass_incorrect'),
-                            _T('login_retour_site'),
-                            "url=".rawurlencode($redirect),
-                            _T('login_nouvelle_tentative'),
-                            (strpos($url,_DIR_RESTREINT_ABS)!==false));
+                               _T('login_login_pass_incorrect'),
+                               _T('login_retour_site'),
+                               "url=" . rawurlencode($redirect),
+                               _T('login_nouvelle_tentative'),
+                               (strpos($url, _DIR_RESTREINT_ABS) !== false));
                }
-       }
-       else {
-               
+       } else {
+
                // en cas de login sur bonjour=oui, on tente de poser un cookie
                // puis de passer au login qui diagnostiquera l'echec de cookie
                // le cas echeant.
                if ($test_echec_cookie == 'oui') {
                        spip_setcookie('spip_session', 'test_echec_cookie');
-                       if ($redirect)
-                               $redirect = parametre_url(parametre_url($redirect_echec,'var_echec_cookie','oui','&'),'url',rawurlencode($redirect),'&');
-               }
-               else {
+                       if ($redirect) {
+                               $redirect = parametre_url(parametre_url($redirect_echec, 'var_echec_cookie', 'oui', '&'), 'url',
+                                       rawurlencode($redirect), '&');
+                       }
+               } else {
 
                        $cook = isset($_COOKIE['spip_admin']) ? $_COOKIE['spip_admin'] : '';
                        // Suppression cookie d'admin ?
                        if ($set_cookie_admin == "non") {
-                               if ($cook)
+                               if ($cook) {
                                        spip_setcookie('spip_admin', $cook, time() - 3600 * 24);
-                       }
-                       // Ajout de cookie d'admin
-                       else if ($set_cookie_admin) {
-                               spip_setcookie('spip_admin', $set_cookie_admin,
-                                       time() + 14 * 24 * 3600);
+                               }
+                       } // Ajout de cookie d'admin
+                       else {
+                               if ($set_cookie_admin and _DUREE_COOKIE_ADMIN) {
+                                       spip_setcookie('spip_admin', $set_cookie_admin, time() + max(_DUREE_COOKIE_ADMIN, 2 * _RENOUVELLE_ALEA));
+                               }
                        }
                }
        }
-       
+
        // Redirection finale
-       if ($redirect)
+       if ($redirect) {
                redirige_par_entete($redirect, true);
+       }
 }
-
-?>