Completed
Push — master ( ca433d...234058 )
by cam
05:24
created
prive/formulaires/login.php 1 patch
Indentation   +246 added lines, -246 removed lines patch added patch discarded remove patch
@@ -17,7 +17,7 @@  discard block
 block discarded – undo
17 17
  **/
18 18
 
19 19
 if (!defined('_ECRIRE_INC_VERSION')) {
20
-	return;
20
+    return;
21 21
 }
22 22
 
23 23
 include_spip('base/abstract_sql');
@@ -31,11 +31,11 @@  discard block
 block discarded – undo
31 31
  *     true si espace privé, false sinon.
32 32
  **/
33 33
 function is_url_prive($cible) {
34
-	include_spip('inc/filtres_mini');
35
-	$path = parse_url(tester_url_absolue($cible) ? $cible : url_absolue($cible));
36
-	$path = (isset($path['path']) ? $path['path'] : '');
34
+    include_spip('inc/filtres_mini');
35
+    $path = parse_url(tester_url_absolue($cible) ? $cible : url_absolue($cible));
36
+    $path = (isset($path['path']) ? $path['path'] : '');
37 37
 
38
-	return strncmp(substr($path, -strlen(_DIR_RESTREINT_ABS)), _DIR_RESTREINT_ABS, strlen(_DIR_RESTREINT_ABS)) == 0;
38
+    return strncmp(substr($path, -strlen(_DIR_RESTREINT_ABS)), _DIR_RESTREINT_ABS, strlen(_DIR_RESTREINT_ABS)) == 0;
39 39
 }
40 40
 
41 41
 /**
@@ -60,110 +60,110 @@  discard block
 block discarded – undo
60 60
  *     Environnement du formulaire
61 61
  **/
62 62
 function formulaires_login_charger_dist($cible = '', $options = [], $deprecated = null) {
63
-	$erreur = _request('var_erreur');
64
-
65
-	if (!is_array($options)) {
66
-		$options = [
67
-			'login' => $options,
68
-			'prive' => $deprecated
69
-		];
70
-	}
71
-
72
-	$login = (empty($options['login']) ? '' : $options['login']);
73
-	$prive = (empty($options['prive']) ? null : $options['prive']);
74
-	// conserver le fonctionnement historique
75
-	if (!isset($options['autofocus'])) {
76
-		$options['autofocus'] = true;
77
-	}
78
-
79
-	if (!$login) {
80
-		$login = strval(_request('var_login'));
81
-	}
82
-	// si on est deja identifie
83
-	if (!$login and isset($GLOBALS['visiteur_session']['email'])) {
84
-		$login = $GLOBALS['visiteur_session']['email'];
85
-	}
86
-	if (!$login and isset($GLOBALS['visiteur_session']['login'])) {
87
-		$login = $GLOBALS['visiteur_session']['login'];
88
-	}
89
-	// ou si on a un cookie admin
90
-	if (!$login) {
91
-		if (isset($_COOKIE['spip_admin'])
92
-			and preg_match(',^@(.*)$,', $_COOKIE['spip_admin'], $regs)
93
-		) {
94
-			$login = $regs[1];
95
-		}
96
-	}
97
-
98
-	$lang = $GLOBALS['spip_lang'];
99
-	include_spip('inc/auth');
100
-	$row = auth_informer_login($login);
101
-
102
-	// retablir la langue de l'URL si forcee (on ignore la langue de l'auteur dans ce cas)
103
-	if (_request('lang') === $lang and $GLOBALS['spip_lang'] !== $lang) {
104
-		changer_langue($lang);
105
-	}
106
-
107
-	// Construire l'environnement du squelette
108
-	// Ne pas proposer de "rester connecte quelques jours"
109
-	// si la duree de l'alea est inferieure a 12 h (valeur par defaut)
110
-
111
-	$valeurs = array(
112
-		'var_login' => $login,
113
-		'editable' => !$row,
114
-		'cnx' => isset($row['cnx']) ? $row['cnx'] : '0',
115
-		'auth_http' => login_auth_http(),
116
-		'rester_connecte' => ((_RENOUVELLE_ALEA < 12 * 3600) ? '' : ' '),
117
-		'_logo' => isset($row['logo']) ? $row['logo'] : '',
118
-		'_alea_actuel' => isset($row['alea_actuel']) ? $row['alea_actuel'] : '',
119
-		'_alea_futur' => isset($row['alea_futur']) ? $row['alea_futur'] : '',
120
-		'_pipeline' => 'affiche_formulaire_login', // faire passer le formulaire dans un pipe dedie pour les methodes auth
121
-		'_autofocus' => ($options['autofocus'] and $options['autofocus'] !== 'non') ? ' ' : '',
122
-	);
123
-
124
-	if ($erreur or !isset($GLOBALS['visiteur_session']['id_auteur']) or !$GLOBALS['visiteur_session']['id_auteur']) {
125
-		$valeurs['editable'] = true;
126
-	}
127
-
128
-	if (is_null($prive) ? is_url_prive($cible) : $prive) {
129
-		include_spip('inc/autoriser');
130
-		$loge = autoriser('ecrire');
131
-	} else {
132
-		$loge = (isset($GLOBALS['visiteur_session']['auth']) and $GLOBALS['visiteur_session']['auth'] != '');
133
-	}
134
-
135
-	// Si on est connecte, appeler traiter()
136
-	// et lancer la redirection si besoin
137
-	if (!$valeurs['editable'] and $loge and _request('formulaire_action')!=='login') {
138
-		$traiter = charger_fonction('traiter', 'formulaires/login');
139
-		$res = $traiter($cible, $login, $prive);
140
-		$valeurs = array_merge($valeurs, $res);
141
-
142
-		if (isset($res['redirect']) and $res['redirect']) {
143
-			include_spip('inc/headers');
144
-			# preparer un lien pour quand redirige_formulaire ne fonctionne pas
145
-			$m = redirige_formulaire($res['redirect'], '', 'ajaxform');
146
-			$valeurs['_deja_loge'] = inserer_attribut(
147
-				'<a>' . _T('login_par_ici') . "</a>$m",
148
-				'href',
149
-				$res['redirect']
150
-			);
151
-		}
152
-	}
153
-	// en cas d'echec de cookie, inc_auth a renvoye vers le script de
154
-	// pose de cookie ; s'il n'est pas la, c'est echec cookie
155
-	// s'il est la, c'est probablement un bookmark sur bonjour=oui,
156
-	// et pas un echec cookie.
157
-	if ($erreur == 'cookie') {
158
-		$valeurs['echec_cookie'] = ' ';
159
-	} elseif ($erreur) {
160
-		// une erreur d'un SSO indique dans la redirection vers ici
161
-		// mais il faut se proteger de toute tentative d'injection malveilante
162
-		include_spip('inc/filtres');
163
-		$valeurs['message_erreur'] = textebrut($erreur);
164
-	}
165
-
166
-	return $valeurs;
63
+    $erreur = _request('var_erreur');
64
+
65
+    if (!is_array($options)) {
66
+        $options = [
67
+            'login' => $options,
68
+            'prive' => $deprecated
69
+        ];
70
+    }
71
+
72
+    $login = (empty($options['login']) ? '' : $options['login']);
73
+    $prive = (empty($options['prive']) ? null : $options['prive']);
74
+    // conserver le fonctionnement historique
75
+    if (!isset($options['autofocus'])) {
76
+        $options['autofocus'] = true;
77
+    }
78
+
79
+    if (!$login) {
80
+        $login = strval(_request('var_login'));
81
+    }
82
+    // si on est deja identifie
83
+    if (!$login and isset($GLOBALS['visiteur_session']['email'])) {
84
+        $login = $GLOBALS['visiteur_session']['email'];
85
+    }
86
+    if (!$login and isset($GLOBALS['visiteur_session']['login'])) {
87
+        $login = $GLOBALS['visiteur_session']['login'];
88
+    }
89
+    // ou si on a un cookie admin
90
+    if (!$login) {
91
+        if (isset($_COOKIE['spip_admin'])
92
+            and preg_match(',^@(.*)$,', $_COOKIE['spip_admin'], $regs)
93
+        ) {
94
+            $login = $regs[1];
95
+        }
96
+    }
97
+
98
+    $lang = $GLOBALS['spip_lang'];
99
+    include_spip('inc/auth');
100
+    $row = auth_informer_login($login);
101
+
102
+    // retablir la langue de l'URL si forcee (on ignore la langue de l'auteur dans ce cas)
103
+    if (_request('lang') === $lang and $GLOBALS['spip_lang'] !== $lang) {
104
+        changer_langue($lang);
105
+    }
106
+
107
+    // Construire l'environnement du squelette
108
+    // Ne pas proposer de "rester connecte quelques jours"
109
+    // si la duree de l'alea est inferieure a 12 h (valeur par defaut)
110
+
111
+    $valeurs = array(
112
+        'var_login' => $login,
113
+        'editable' => !$row,
114
+        'cnx' => isset($row['cnx']) ? $row['cnx'] : '0',
115
+        'auth_http' => login_auth_http(),
116
+        'rester_connecte' => ((_RENOUVELLE_ALEA < 12 * 3600) ? '' : ' '),
117
+        '_logo' => isset($row['logo']) ? $row['logo'] : '',
118
+        '_alea_actuel' => isset($row['alea_actuel']) ? $row['alea_actuel'] : '',
119
+        '_alea_futur' => isset($row['alea_futur']) ? $row['alea_futur'] : '',
120
+        '_pipeline' => 'affiche_formulaire_login', // faire passer le formulaire dans un pipe dedie pour les methodes auth
121
+        '_autofocus' => ($options['autofocus'] and $options['autofocus'] !== 'non') ? ' ' : '',
122
+    );
123
+
124
+    if ($erreur or !isset($GLOBALS['visiteur_session']['id_auteur']) or !$GLOBALS['visiteur_session']['id_auteur']) {
125
+        $valeurs['editable'] = true;
126
+    }
127
+
128
+    if (is_null($prive) ? is_url_prive($cible) : $prive) {
129
+        include_spip('inc/autoriser');
130
+        $loge = autoriser('ecrire');
131
+    } else {
132
+        $loge = (isset($GLOBALS['visiteur_session']['auth']) and $GLOBALS['visiteur_session']['auth'] != '');
133
+    }
134
+
135
+    // Si on est connecte, appeler traiter()
136
+    // et lancer la redirection si besoin
137
+    if (!$valeurs['editable'] and $loge and _request('formulaire_action')!=='login') {
138
+        $traiter = charger_fonction('traiter', 'formulaires/login');
139
+        $res = $traiter($cible, $login, $prive);
140
+        $valeurs = array_merge($valeurs, $res);
141
+
142
+        if (isset($res['redirect']) and $res['redirect']) {
143
+            include_spip('inc/headers');
144
+            # preparer un lien pour quand redirige_formulaire ne fonctionne pas
145
+            $m = redirige_formulaire($res['redirect'], '', 'ajaxform');
146
+            $valeurs['_deja_loge'] = inserer_attribut(
147
+                '<a>' . _T('login_par_ici') . "</a>$m",
148
+                'href',
149
+                $res['redirect']
150
+            );
151
+        }
152
+    }
153
+    // en cas d'echec de cookie, inc_auth a renvoye vers le script de
154
+    // pose de cookie ; s'il n'est pas la, c'est echec cookie
155
+    // s'il est la, c'est probablement un bookmark sur bonjour=oui,
156
+    // et pas un echec cookie.
157
+    if ($erreur == 'cookie') {
158
+        $valeurs['echec_cookie'] = ' ';
159
+    } elseif ($erreur) {
160
+        // une erreur d'un SSO indique dans la redirection vers ici
161
+        // mais il faut se proteger de toute tentative d'injection malveilante
162
+        include_spip('inc/filtres');
163
+        $valeurs['message_erreur'] = textebrut($erreur);
164
+    }
165
+
166
+    return $valeurs;
167 167
 }
168 168
 
169 169
 
@@ -178,19 +178,19 @@  discard block
 block discarded – undo
178 178
  *     - chaîne vide sinon.
179 179
  **/
180 180
 function login_auth_http() {
181
-	if (!$GLOBALS['ignore_auth_http']
182
-		and _request('var_erreur') == 'cookie'
183
-		and (!isset($_COOKIE['spip_session']) or $_COOKIE['spip_session'] != 'test_echec_cookie')
184
-		and (($GLOBALS['flag_sapi_name'] and preg_match(',apache,i', @php_sapi_name()))
185
-			or preg_match(',^Apache.* PHP,', $_SERVER['SERVER_SOFTWARE']))
186
-		// Attention dans le cas 'intranet' la proposition de se loger
187
-		// par auth_http peut conduire a l'echec.
188
-		and !(isset($_SERVER['PHP_AUTH_USER']) and isset($_SERVER['PHP_AUTH_PW']))
189
-	) {
190
-		return generer_url_action('cookie', '', false, true);
191
-	} else {
192
-		return '';
193
-	}
181
+    if (!$GLOBALS['ignore_auth_http']
182
+        and _request('var_erreur') == 'cookie'
183
+        and (!isset($_COOKIE['spip_session']) or $_COOKIE['spip_session'] != 'test_echec_cookie')
184
+        and (($GLOBALS['flag_sapi_name'] and preg_match(',apache,i', @php_sapi_name()))
185
+            or preg_match(',^Apache.* PHP,', $_SERVER['SERVER_SOFTWARE']))
186
+        // Attention dans le cas 'intranet' la proposition de se loger
187
+        // par auth_http peut conduire a l'echec.
188
+        and !(isset($_SERVER['PHP_AUTH_USER']) and isset($_SERVER['PHP_AUTH_PW']))
189
+    ) {
190
+        return generer_url_action('cookie', '', false, true);
191
+    } else {
192
+        return '';
193
+    }
194 194
 }
195 195
 
196 196
 
@@ -216,64 +216,64 @@  discard block
 block discarded – undo
216 216
  **/
217 217
 function formulaires_login_verifier_dist($cible = '', $options = [], $deprecated = null) {
218 218
 
219
-	if (!is_array($options)) {
220
-		$options = [
221
-			'login' => $options,
222
-			'prive' => $deprecated
223
-		];
224
-	}
225
-
226
-	$prive = (empty($options['prive']) ? null : $options['prive']);
227
-
228
-	$session_login = _request('var_login');
229
-	$session_password = _request('password');
230
-	$session_remember = _request('session_remember');
231
-
232
-	if (!$session_login) {
233
-		# pas de login saisi !
234
-		return array('var_login' => _T('info_obligatoire'));
235
-	}
236
-
237
-	// appeler auth_identifier_login qui va :
238
-	// - renvoyer un string si echec (message d'erreur)
239
-	// - un array decrivant l'auteur identifie si possible
240
-	// - rediriger vers un SSO qui renverra in fine sur action/auth qui finira l'authentification
241
-	include_spip('inc/auth');
242
-	$auteur = auth_identifier_login($session_login, $session_password);
243
-	// on arrive ici si on ne s'est pas identifie avec un SSO
244
-	if (!is_array($auteur)) {
245
-		$erreurs = array();
246
-		if (is_string($auteur) and strlen($auteur)) {
247
-			$erreurs['var_login'] = $auteur;
248
-		}
249
-		include_spip('inc/cookie');
250
-		spip_setcookie('spip_admin', '', time() - 3600);
251
-		if (strlen($session_password)) {
252
-			$erreurs['password'] = _T('login_erreur_pass');
253
-		} else {
254
-			// sinon c'est un login en deux passe old style (ou js en panne)
255
-			// pas de message d'erreur
256
-			$erreurs['password'] = ' ';
257
-			$erreurs['message_erreur'] = '';
258
-		}
259
-
260
-		return
261
-			$erreurs;
262
-	}
263
-	// on a ete authentifie, construire la session
264
-	// en gerant la duree demandee pour son cookie
265
-	if ($session_remember !== null) {
266
-		$auteur['cookie'] = $session_remember;
267
-	}
268
-	// si la connexion est refusee on renvoi un message erreur de mot de passe
269
-	// car en donnant plus de detail on renseignerait un assaillant sur l'existence d'un compte
270
-	if (auth_loger($auteur) === false) {
271
-		$erreurs['message_erreur'] = _T('login_erreur_pass');
272
-		return $erreurs;
273
-	}
274
-
275
-	return (is_null($prive) ? is_url_prive($cible) : $prive)
276
-		? login_autoriser() : array();
219
+    if (!is_array($options)) {
220
+        $options = [
221
+            'login' => $options,
222
+            'prive' => $deprecated
223
+        ];
224
+    }
225
+
226
+    $prive = (empty($options['prive']) ? null : $options['prive']);
227
+
228
+    $session_login = _request('var_login');
229
+    $session_password = _request('password');
230
+    $session_remember = _request('session_remember');
231
+
232
+    if (!$session_login) {
233
+        # pas de login saisi !
234
+        return array('var_login' => _T('info_obligatoire'));
235
+    }
236
+
237
+    // appeler auth_identifier_login qui va :
238
+    // - renvoyer un string si echec (message d'erreur)
239
+    // - un array decrivant l'auteur identifie si possible
240
+    // - rediriger vers un SSO qui renverra in fine sur action/auth qui finira l'authentification
241
+    include_spip('inc/auth');
242
+    $auteur = auth_identifier_login($session_login, $session_password);
243
+    // on arrive ici si on ne s'est pas identifie avec un SSO
244
+    if (!is_array($auteur)) {
245
+        $erreurs = array();
246
+        if (is_string($auteur) and strlen($auteur)) {
247
+            $erreurs['var_login'] = $auteur;
248
+        }
249
+        include_spip('inc/cookie');
250
+        spip_setcookie('spip_admin', '', time() - 3600);
251
+        if (strlen($session_password)) {
252
+            $erreurs['password'] = _T('login_erreur_pass');
253
+        } else {
254
+            // sinon c'est un login en deux passe old style (ou js en panne)
255
+            // pas de message d'erreur
256
+            $erreurs['password'] = ' ';
257
+            $erreurs['message_erreur'] = '';
258
+        }
259
+
260
+        return
261
+            $erreurs;
262
+    }
263
+    // on a ete authentifie, construire la session
264
+    // en gerant la duree demandee pour son cookie
265
+    if ($session_remember !== null) {
266
+        $auteur['cookie'] = $session_remember;
267
+    }
268
+    // si la connexion est refusee on renvoi un message erreur de mot de passe
269
+    // car en donnant plus de detail on renseignerait un assaillant sur l'existence d'un compte
270
+    if (auth_loger($auteur) === false) {
271
+        $erreurs['message_erreur'] = _T('login_erreur_pass');
272
+        return $erreurs;
273
+    }
274
+
275
+    return (is_null($prive) ? is_url_prive($cible) : $prive)
276
+        ? login_autoriser() : array();
277 277
 }
278 278
 
279 279
 /**
@@ -288,21 +288,21 @@  discard block
 block discarded – undo
288 288
  *     - tableau vide sinon.
289 289
  **/
290 290
 function login_autoriser() {
291
-	include_spip('inc/autoriser');
292
-	if (!autoriser('ecrire')) {
293
-		$h = generer_url_action('logout', 'logout=prive&url=' . urlencode(self()));
294
-
295
-		return array(
296
-			'message_erreur' => '<h1>'
297
-				. _T('avis_erreur_visiteur')
298
-				. '</h1><p>'
299
-				. _T('texte_erreur_visiteur')
300
-				. "</p><p class='retour'>[<a href='$h'>"
301
-				. _T('icone_deconnecter') . '</a>]</p>'
302
-		);
303
-	}
304
-
305
-	return array();
291
+    include_spip('inc/autoriser');
292
+    if (!autoriser('ecrire')) {
293
+        $h = generer_url_action('logout', 'logout=prive&url=' . urlencode(self()));
294
+
295
+        return array(
296
+            'message_erreur' => '<h1>'
297
+                . _T('avis_erreur_visiteur')
298
+                . '</h1><p>'
299
+                . _T('texte_erreur_visiteur')
300
+                . "</p><p class='retour'>[<a href='$h'>"
301
+                . _T('icone_deconnecter') . '</a>]</p>'
302
+        );
303
+    }
304
+
305
+    return array();
306 306
 }
307 307
 
308 308
 /**
@@ -323,55 +323,55 @@  discard block
 block discarded – undo
323 323
  *     Retours du traitement
324 324
  **/
325 325
 function formulaires_login_traiter_dist($cible = '', $options = [], $deprecated = null) {
326
-	$res = array();
327
-
328
-	if (!is_array($options)) {
329
-		$options = [
330
-			'login' => $options,
331
-			'prive' => $deprecated
332
-		];
333
-	}
334
-
335
-	$login = (empty($options['login']) ? '' : $options['login']);
336
-	$prive = (empty($options['prive']) ? null : $options['prive']);
337
-
338
-	// Si on se connecte dans l'espace prive,
339
-	// ajouter "bonjour" (repere a peu pres les cookies desactives)
340
-	if (is_null($prive) ? is_url_prive($cible) : $prive) {
341
-		$cible = parametre_url($cible, 'bonjour', 'oui', '&');
342
-	}
343
-	if ($cible == '@page_auteur') {
344
-		$cible = generer_url_entite($GLOBALS['auteur_session']['id_auteur'], 'auteur');
345
-	}
346
-
347
-	if ($cible) {
348
-		$cible = parametre_url($cible, 'var_login', '', '&');
349
-
350
-		// transformer la cible absolue en cible relative
351
-		// pour pas echouer quand la meta adresse_site est foireuse
352
-		if (strncmp($cible, $u = url_de_base(), strlen($u)) == 0) {
353
-			$cible = './' . substr($cible, strlen($u));
354
-		} elseif (tester_url_absolue($cible) and !defined('_AUTORISER_LOGIN_ABS_REDIRECT')) {
355
-			// si c'est une url absolue, refuser la redirection
356
-			// sauf si cette securite est levee volontairement par le webmestre
357
-			$cible = '';
358
-		}
359
-	}
360
-
361
-	// Si on est connecte, envoyer vers la destination
362
-	if ($cible and ($cible != self('&')) and ($cible != self())) {
363
-		$res['redirect'] = $cible;
364
-		$res['message_ok'] = inserer_attribut(
365
-			'<a>' . _T('login_par_ici') . '</a>',
366
-			'href',
367
-			$cible
368
-		);
369
-	}
370
-
371
-	// avant de rediriger il faut mettre a jour les sessions sur le disque si on a charge une session
372
-	if (function_exists('terminer_actualiser_sessions')) {
373
-		terminer_actualiser_sessions();
374
-	}
375
-
376
-	return $res;
326
+    $res = array();
327
+
328
+    if (!is_array($options)) {
329
+        $options = [
330
+            'login' => $options,
331
+            'prive' => $deprecated
332
+        ];
333
+    }
334
+
335
+    $login = (empty($options['login']) ? '' : $options['login']);
336
+    $prive = (empty($options['prive']) ? null : $options['prive']);
337
+
338
+    // Si on se connecte dans l'espace prive,
339
+    // ajouter "bonjour" (repere a peu pres les cookies desactives)
340
+    if (is_null($prive) ? is_url_prive($cible) : $prive) {
341
+        $cible = parametre_url($cible, 'bonjour', 'oui', '&');
342
+    }
343
+    if ($cible == '@page_auteur') {
344
+        $cible = generer_url_entite($GLOBALS['auteur_session']['id_auteur'], 'auteur');
345
+    }
346
+
347
+    if ($cible) {
348
+        $cible = parametre_url($cible, 'var_login', '', '&');
349
+
350
+        // transformer la cible absolue en cible relative
351
+        // pour pas echouer quand la meta adresse_site est foireuse
352
+        if (strncmp($cible, $u = url_de_base(), strlen($u)) == 0) {
353
+            $cible = './' . substr($cible, strlen($u));
354
+        } elseif (tester_url_absolue($cible) and !defined('_AUTORISER_LOGIN_ABS_REDIRECT')) {
355
+            // si c'est une url absolue, refuser la redirection
356
+            // sauf si cette securite est levee volontairement par le webmestre
357
+            $cible = '';
358
+        }
359
+    }
360
+
361
+    // Si on est connecte, envoyer vers la destination
362
+    if ($cible and ($cible != self('&')) and ($cible != self())) {
363
+        $res['redirect'] = $cible;
364
+        $res['message_ok'] = inserer_attribut(
365
+            '<a>' . _T('login_par_ici') . '</a>',
366
+            'href',
367
+            $cible
368
+        );
369
+    }
370
+
371
+    // avant de rediriger il faut mettre a jour les sessions sur le disque si on a charge une session
372
+    if (function_exists('terminer_actualiser_sessions')) {
373
+        terminer_actualiser_sessions();
374
+    }
375
+
376
+    return $res;
377 377
 }
Please login to merge, or discard this patch.