/***************************************************************************\
* 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');
$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;
+ }
}
}
}
// 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);
+ }
}
-
-?>