[SPIP] ~v3.0.20-->v3.0.25
[lhc/web/clavette_www.git] / www / ecrire / action / cookie.php
1 <?php
2
3 /***************************************************************************\
4 * SPIP, Systeme de publication pour l'internet *
5 * *
6 * Copyright (c) 2001-2016 *
7 * Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
8 * *
9 * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
10 * Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
11 \***************************************************************************/
12
13 if (!defined('_ECRIRE_INC_VERSION')) return;
14
15 include_spip('inc/actions');
16 include_spip('inc/cookie');
17
18 // http://doc.spip.org/@action_cookie_dist
19 function action_cookie_dist($set_cookie_admin=null, $change_session = null) {
20 $redirect_echec = $redirect = null;
21 $test_echec_cookie = null;
22 $url = "";
23 if (is_null($set_cookie_admin)){
24 $set_cookie_admin = _request('cookie_admin');
25 $change_session = _request('change_session');
26 $test_echec_cookie = _request('test_echec_cookie');
27
28 // La cible de notre operation de connexion
29 $url = securiser_redirect_action(_request('url'));
30 $redirect = $url ? $url : generer_url_ecrire('accueil');
31 $redirect_echec = _request('url_echec');
32 if (!isset($redirect_echec)) {
33 if (strpos($redirect,_DIR_RESTREINT_ABS)!==false)
34 $redirect_echec = generer_url_public('login','',true);
35 else
36 $redirect_echec = $redirect;
37 }
38 }
39
40
41 // rejoue le cookie pour renouveler spip_session
42 if ($change_session == 'oui') {
43 $session = charger_fonction('session', 'inc');
44 $session(true);
45 spip_log("statut 204 pour " . $_SERVER['REQUEST_URI']);
46 http_status(204); // No Content
47 return;
48 }
49
50 // tentative de connexion en auth_http
51 if (_request('essai_auth_http') AND !$GLOBALS['ignore_auth_http']) {
52 include_spip('inc/auth');
53 if (@$_SERVER['PHP_AUTH_USER']
54 AND @$_SERVER['PHP_AUTH_PW']
55 AND $auteur = lire_php_auth($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'])){
56 auth_loger($auteur);
57 redirige_par_entete(parametre_url($redirect,'t',time(),'&'));
58 }
59 else {
60 ask_php_auth(_T('info_connexion_refusee'),
61 _T('login_login_pass_incorrect'),
62 _T('login_retour_site'),
63 "url=".rawurlencode($redirect),
64 _T('login_nouvelle_tentative'),
65 (strpos($url,_DIR_RESTREINT_ABS)!==false));
66 }
67 }
68 else {
69
70 // en cas de login sur bonjour=oui, on tente de poser un cookie
71 // puis de passer au login qui diagnostiquera l'echec de cookie
72 // le cas echeant.
73 if ($test_echec_cookie == 'oui') {
74 spip_setcookie('spip_session', 'test_echec_cookie');
75 if ($redirect)
76 $redirect = parametre_url(parametre_url($redirect_echec,'var_echec_cookie','oui','&'),'url',rawurlencode($redirect),'&');
77 }
78 else {
79
80 $cook = isset($_COOKIE['spip_admin']) ? $_COOKIE['spip_admin'] : '';
81 // Suppression cookie d'admin ?
82 if ($set_cookie_admin == "non") {
83 if ($cook)
84 spip_setcookie('spip_admin', $cook, time() - 3600 * 24);
85 }
86 // Ajout de cookie d'admin
87 else if ($set_cookie_admin) {
88 spip_setcookie('spip_admin', $set_cookie_admin,
89 time() + 14 * 24 * 3600);
90 }
91 }
92 }
93
94 // Redirection finale
95 if ($redirect)
96 redirige_par_entete($redirect, true);
97 }
98
99 ?>