Completed
Push — master ( 08db8b...c994fa )
by cam
01:00
created
ecrire/inc/auth.php 1 patch
Indentation   +446 added lines, -446 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');
@@ -35,33 +35,33 @@  discard block
 block discarded – undo
35 35
  *  - une chaîne vide si autorisation à pénétrer dans l'espace privé.
36 36
  */
37 37
 function inc_auth_dist() {
38
-	$row = auth_mode();
38
+    $row = auth_mode();
39 39
 
40
-	if ($row) {
41
-		return auth_init_droits($row);
42
-	}
40
+    if ($row) {
41
+        return auth_init_droits($row);
42
+    }
43 43
 
44
-	if (!$GLOBALS['connect_login']) {
45
-		return auth_a_loger();
46
-	}
44
+    if (!$GLOBALS['connect_login']) {
45
+        return auth_a_loger();
46
+    }
47 47
 
48
-	// Cas ou l'auteur a ete identifie mais on n'a pas d'info sur lui
49
-	// C'est soit parce que la base est inutilisable,
50
-	// soit parce que la table des auteurs a changee (restauration etc)
51
-	// Pas la peine d'insister.
52
-	// Renvoyer le nom fautif et une URL de remise a zero
48
+    // Cas ou l'auteur a ete identifie mais on n'a pas d'info sur lui
49
+    // C'est soit parce que la base est inutilisable,
50
+    // soit parce que la table des auteurs a changee (restauration etc)
51
+    // Pas la peine d'insister.
52
+    // Renvoyer le nom fautif et une URL de remise a zero
53 53
 
54
-	if (spip_connect()) {
55
-		return [
56
-			'login' => $GLOBALS['connect_login'],
57
-			'site' => generer_url_public('', 'action=logout&logout=prive')
58
-		];
59
-	}
54
+    if (spip_connect()) {
55
+        return [
56
+            'login' => $GLOBALS['connect_login'],
57
+            'site' => generer_url_public('', 'action=logout&logout=prive')
58
+        ];
59
+    }
60 60
 
61
-	$n = intval(sql_errno());
62
-	spip_log("Erreur base de donnees $n " . sql_error());
61
+    $n = intval(sql_errno());
62
+    spip_log("Erreur base de donnees $n " . sql_error());
63 63
 
64
-	return $n ?: 1;
64
+    return $n ?: 1;
65 65
 }
66 66
 
67 67
 /**
@@ -71,22 +71,22 @@  discard block
 block discarded – undo
71 71
  */
72 72
 function auth_controler_password_auteur_connecte(string $password): bool {
73 73
 
74
-	if (
75
-		empty($GLOBALS['visiteur_session']['id_auteur'])
76
-		or empty($GLOBALS['visiteur_session']['login'])
77
-	) {
78
-		return false;
79
-	}
80
-
81
-	$auth = auth_identifier_login($GLOBALS['visiteur_session']['login'], $password);
82
-	if (
83
-		is_array($auth)
84
-		and $auth['id_auteur'] == $GLOBALS['visiteur_session']['id_auteur']
85
-	) {
86
-		return true;
87
-	}
88
-
89
-	return false;
74
+    if (
75
+        empty($GLOBALS['visiteur_session']['id_auteur'])
76
+        or empty($GLOBALS['visiteur_session']['login'])
77
+    ) {
78
+        return false;
79
+    }
80
+
81
+    $auth = auth_identifier_login($GLOBALS['visiteur_session']['login'], $password);
82
+    if (
83
+        is_array($auth)
84
+        and $auth['id_auteur'] == $GLOBALS['visiteur_session']['id_auteur']
85
+    ) {
86
+        return true;
87
+    }
88
+
89
+    return false;
90 90
 }
91 91
 
92 92
 /**
@@ -98,39 +98,39 @@  discard block
 block discarded – undo
98 98
  * @return array|string
99 99
  */
100 100
 function auth_echec($raison) {
101
-	include_spip('inc/minipres');
102
-	include_spip('inc/headers');
103
-	// pas authentifie. Pourquoi ?
104
-	if (is_string($raison)) {
105
-		// redirection vers une page d'authentification
106
-		// on ne revient pas de cette fonction
107
-		// sauf si pb de header
108
-		$raison = redirige_formulaire($raison);
109
-	} elseif (is_int($raison)) {
110
-		// erreur SQL a afficher
111
-		$raison = minipres(
112
-			_T('info_travaux_titre'),
113
-			_T('titre_probleme_technique') . '<p><tt>' . sql_errno() . ' ' . sql_error() . '</tt></p>'
114
-		);
115
-	} elseif (@$raison['statut']) {
116
-		// un simple visiteur n'a pas acces a l'espace prive
117
-		spip_log('connexion refusee a ' . @$raison['id_auteur']);
118
-		$raison = minipres(_T('avis_erreur_connexion'), _T('avis_erreur_visiteur'));
119
-	} else {
120
-		// auteur en fin de droits ...
121
-		$h = $raison['site'];
122
-		$raison = minipres(
123
-			_T('avis_erreur_connexion'),
124
-			'<br /><br /><p>'
125
-			. _T('texte_inc_auth_1', ['auth_login' => $raison['login']])
126
-			. " <a href='$h'>"
127
-			. _T('texte_inc_auth_2')
128
-			. '</a>'
129
-			. _T('texte_inc_auth_3')
130
-		);
131
-	}
132
-
133
-	return $raison;
101
+    include_spip('inc/minipres');
102
+    include_spip('inc/headers');
103
+    // pas authentifie. Pourquoi ?
104
+    if (is_string($raison)) {
105
+        // redirection vers une page d'authentification
106
+        // on ne revient pas de cette fonction
107
+        // sauf si pb de header
108
+        $raison = redirige_formulaire($raison);
109
+    } elseif (is_int($raison)) {
110
+        // erreur SQL a afficher
111
+        $raison = minipres(
112
+            _T('info_travaux_titre'),
113
+            _T('titre_probleme_technique') . '<p><tt>' . sql_errno() . ' ' . sql_error() . '</tt></p>'
114
+        );
115
+    } elseif (@$raison['statut']) {
116
+        // un simple visiteur n'a pas acces a l'espace prive
117
+        spip_log('connexion refusee a ' . @$raison['id_auteur']);
118
+        $raison = minipres(_T('avis_erreur_connexion'), _T('avis_erreur_visiteur'));
119
+    } else {
120
+        // auteur en fin de droits ...
121
+        $h = $raison['site'];
122
+        $raison = minipres(
123
+            _T('avis_erreur_connexion'),
124
+            '<br /><br /><p>'
125
+            . _T('texte_inc_auth_1', ['auth_login' => $raison['login']])
126
+            . " <a href='$h'>"
127
+            . _T('texte_inc_auth_2')
128
+            . '</a>'
129
+            . _T('texte_inc_auth_3')
130
+        );
131
+    }
132
+
133
+    return $raison;
134 134
 }
135 135
 
136 136
 /**
@@ -140,81 +140,81 @@  discard block
 block discarded – undo
140 140
  * @return array|bool|string
141 141
  */
142 142
 function auth_mode() {
143
-	//
144
-	// Initialiser variables (eviter hacks par URL)
145
-	//
146
-	$GLOBALS['connect_login'] = '';
147
-	$id_auteur = null;
148
-	$GLOBALS['auth_can_disconnect'] = false;
149
-
150
-	//
151
-	// Recuperer les donnees d'identification
152
-	//
153
-	include_spip('inc/session');
154
-	// Session valide en cours ?
155
-	if (isset($_COOKIE['spip_session'])) {
156
-		$session = charger_fonction('session', 'inc');
157
-		if (
158
-			$id_auteur = $session()
159
-			or $id_auteur === 0 // reprise sur restauration
160
-		) {
161
-			$GLOBALS['auth_can_disconnect'] = true;
162
-			$GLOBALS['connect_login'] = session_get('login');
163
-		} else {
164
-			unset($_COOKIE['spip_session']);
165
-		}
166
-	}
167
-
168
-	// Essayer auth http si significatif
169
-	// (ignorer les login d'intranet independants de spip)
170
-	if (!$GLOBALS['ignore_auth_http']) {
171
-		if (
172
-			(isset($_SERVER['PHP_AUTH_USER']) and isset($_SERVER['PHP_AUTH_PW'])
173
-				and $r = lire_php_auth($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']))
174
-			or
175
-			// Si auth http differtente de basic, PHP_AUTH_PW
176
-			// est indisponible mais tentons quand meme pour
177
-			// autocreation via LDAP
178
-			(isset($_SERVER['REMOTE_USER'])
179
-				and $r = lire_php_auth($_SERVER['PHP_AUTH_USER'] = $_SERVER['REMOTE_USER'], ''))
180
-		) {
181
-			if (!$id_auteur) {
182
-				$_SERVER['PHP_AUTH_PW'] = '';
183
-				$GLOBALS['auth_can_disconnect'] = true;
184
-				$GLOBALS['visiteur_session'] = $r;
185
-				$GLOBALS['connect_login'] = session_get('login');
186
-				$id_auteur = $r['id_auteur'];
187
-			} else {
188
-				// cas de la session en plus de PHP_AUTH
189
-				/*				  if ($id_auteur != $r['id_auteur']){
143
+    //
144
+    // Initialiser variables (eviter hacks par URL)
145
+    //
146
+    $GLOBALS['connect_login'] = '';
147
+    $id_auteur = null;
148
+    $GLOBALS['auth_can_disconnect'] = false;
149
+
150
+    //
151
+    // Recuperer les donnees d'identification
152
+    //
153
+    include_spip('inc/session');
154
+    // Session valide en cours ?
155
+    if (isset($_COOKIE['spip_session'])) {
156
+        $session = charger_fonction('session', 'inc');
157
+        if (
158
+            $id_auteur = $session()
159
+            or $id_auteur === 0 // reprise sur restauration
160
+        ) {
161
+            $GLOBALS['auth_can_disconnect'] = true;
162
+            $GLOBALS['connect_login'] = session_get('login');
163
+        } else {
164
+            unset($_COOKIE['spip_session']);
165
+        }
166
+    }
167
+
168
+    // Essayer auth http si significatif
169
+    // (ignorer les login d'intranet independants de spip)
170
+    if (!$GLOBALS['ignore_auth_http']) {
171
+        if (
172
+            (isset($_SERVER['PHP_AUTH_USER']) and isset($_SERVER['PHP_AUTH_PW'])
173
+                and $r = lire_php_auth($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']))
174
+            or
175
+            // Si auth http differtente de basic, PHP_AUTH_PW
176
+            // est indisponible mais tentons quand meme pour
177
+            // autocreation via LDAP
178
+            (isset($_SERVER['REMOTE_USER'])
179
+                and $r = lire_php_auth($_SERVER['PHP_AUTH_USER'] = $_SERVER['REMOTE_USER'], ''))
180
+        ) {
181
+            if (!$id_auteur) {
182
+                $_SERVER['PHP_AUTH_PW'] = '';
183
+                $GLOBALS['auth_can_disconnect'] = true;
184
+                $GLOBALS['visiteur_session'] = $r;
185
+                $GLOBALS['connect_login'] = session_get('login');
186
+                $id_auteur = $r['id_auteur'];
187
+            } else {
188
+                // cas de la session en plus de PHP_AUTH
189
+                /*				  if ($id_auteur != $r['id_auteur']){
190 190
 					spip_log("vol de session $id_auteur" . join(', ', $r));
191 191
 				unset($_COOKIE['spip_session']);
192 192
 				$id_auteur = '';
193 193
 				} */
194
-			}
195
-		} else {
196
-			// Authentification .htaccess old style, car .htaccess semble
197
-			// souvent definir *aussi* PHP_AUTH_USER et PHP_AUTH_PW
198
-			if (isset($_SERVER['REMOTE_USER'])) {
199
-				$GLOBALS['connect_login'] = $_SERVER['REMOTE_USER'];
200
-			}
201
-		}
202
-	}
203
-
204
-	$where = (is_numeric($id_auteur)
205
-		/*AND $id_auteur>0*/ // reprise lors des restaurations
206
-	) ?
207
-		"id_auteur=$id_auteur" :
208
-		(!strlen($GLOBALS['connect_login']) ? '' : 'login=' . sql_quote($GLOBALS['connect_login'], '', 'text'));
209
-
210
-	if (!$where) {
211
-		return '';
212
-	}
213
-
214
-	// Trouver les autres infos dans la table auteurs.
215
-	// le champ 'quand' est utilise par l'agenda
216
-
217
-	return sql_fetsel('*, en_ligne AS quand', 'spip_auteurs', "$where AND statut!='5poubelle'");
194
+            }
195
+        } else {
196
+            // Authentification .htaccess old style, car .htaccess semble
197
+            // souvent definir *aussi* PHP_AUTH_USER et PHP_AUTH_PW
198
+            if (isset($_SERVER['REMOTE_USER'])) {
199
+                $GLOBALS['connect_login'] = $_SERVER['REMOTE_USER'];
200
+            }
201
+        }
202
+    }
203
+
204
+    $where = (is_numeric($id_auteur)
205
+        /*AND $id_auteur>0*/ // reprise lors des restaurations
206
+    ) ?
207
+        "id_auteur=$id_auteur" :
208
+        (!strlen($GLOBALS['connect_login']) ? '' : 'login=' . sql_quote($GLOBALS['connect_login'], '', 'text'));
209
+
210
+    if (!$where) {
211
+        return '';
212
+    }
213
+
214
+    // Trouver les autres infos dans la table auteurs.
215
+    // le champ 'quand' est utilise par l'agenda
216
+
217
+    return sql_fetsel('*, en_ligne AS quand', 'spip_auteurs', "$where AND statut!='5poubelle'");
218 218
 }
219 219
 
220 220
 /**
@@ -232,86 +232,86 @@  discard block
 block discarded – undo
232 232
  */
233 233
 function auth_init_droits($row) {
234 234
 
235
-	include_spip('inc/autoriser');
236
-	if (!autoriser('loger', '', 0, $row)) {
237
-		return false;
238
-	}
239
-
240
-
241
-	if ($row['statut'] == 'nouveau') {
242
-		include_spip('action/inscrire_auteur');
243
-		$row = confirmer_statut_inscription($row);
244
-	}
245
-
246
-	$GLOBALS['connect_id_auteur'] = $row['id_auteur'];
247
-	$GLOBALS['connect_login'] = $row['login'];
248
-	$GLOBALS['connect_statut'] = $row['statut'];
249
-
250
-	$GLOBALS['visiteur_session'] = array_merge((array)$GLOBALS['visiteur_session'], $row);
251
-
252
-	// au cas ou : ne pas memoriser les champs sensibles
253
-	unset($GLOBALS['visiteur_session']['pass']);
254
-	unset($GLOBALS['visiteur_session']['htpass']);
255
-	unset($GLOBALS['visiteur_session']['alea_actuel']);
256
-	unset($GLOBALS['visiteur_session']['alea_futur']);
257
-	unset($GLOBALS['visiteur_session']['ldap_password']);
258
-
259
-	// creer la session au besoin
260
-	if (!isset($_COOKIE['spip_session'])) {
261
-		$session = charger_fonction('session', 'inc');
262
-		$spip_session = $session($row);
263
-	}
264
-
265
-	// reinjecter les preferences_auteur apres le reset de spip_session
266
-	// car utilisees au retour par auth_loger()
267
-	$r = @unserialize($row['prefs']);
268
-	$GLOBALS['visiteur_session']['prefs'] = ($r ?: []);
269
-	// si prefs pas definies, les definir par defaut
270
-	if (!isset($GLOBALS['visiteur_session']['prefs']['couleur'])) {
271
-		$GLOBALS['visiteur_session']['prefs']['couleur'] = 2;
272
-		$GLOBALS['visiteur_session']['prefs']['display'] = 2;
273
-		$GLOBALS['visiteur_session']['prefs']['display_navigation'] = 'navigation_avec_icones';
274
-		$GLOBALS['visiteur_session']['prefs']['display_outils'] = 'oui';
275
-	}
276
-
277
-	$GLOBALS['visiteur_session'] = pipeline(
278
-		'preparer_visiteur_session',
279
-		['args' => ['row' => $row],
280
-		'data' => $GLOBALS['visiteur_session']]
281
-	);
282
-
283
-	// Etablir les droits selon le codage attendu
284
-	// dans ecrire/index.php ecrire/prive.php
285
-
286
-	// Pas autorise a acceder a ecrire ? renvoyer le tableau
287
-	// A noter : le premier appel a autoriser() a le bon gout
288
-	// d'initialiser $GLOBALS['visiteur_session']['restreint'],
289
-	// qui ne figure pas dans le fichier de session
290
-
291
-	if (!autoriser('ecrire')) {
292
-		return $row;
293
-	}
294
-
295
-	// autoriser('ecrire') ne laisse passer que les Admin et les Redac
296
-
297
-	auth_trace($row);
298
-
299
-	// Administrateurs
300
-	if (in_array($GLOBALS['connect_statut'], explode(',', _STATUT_AUTEUR_RUBRIQUE))) {
301
-		if (
302
-			isset($GLOBALS['visiteur_session']['restreint'])
303
-			and is_array($GLOBALS['visiteur_session']['restreint'])
304
-		) {
305
-			$GLOBALS['connect_id_rubrique'] = $GLOBALS['visiteur_session']['restreint'];
306
-		}
307
-		if ($GLOBALS['connect_statut'] == '0minirezo') {
308
-			$GLOBALS['connect_toutes_rubriques'] = !$GLOBALS['connect_id_rubrique'];
309
-		}
310
-	}
311
-
312
-	// Pour les redacteurs, inc_version a fait l'initialisation minimale
313
-
314
-	return ''; // i.e. pas de pb.
235
+    include_spip('inc/autoriser');
236
+    if (!autoriser('loger', '', 0, $row)) {
237
+        return false;
238
+    }
239
+
240
+
241
+    if ($row['statut'] == 'nouveau') {
242
+        include_spip('action/inscrire_auteur');
243
+        $row = confirmer_statut_inscription($row);
244
+    }
245
+
246
+    $GLOBALS['connect_id_auteur'] = $row['id_auteur'];
247
+    $GLOBALS['connect_login'] = $row['login'];
248
+    $GLOBALS['connect_statut'] = $row['statut'];
249
+
250
+    $GLOBALS['visiteur_session'] = array_merge((array)$GLOBALS['visiteur_session'], $row);
251
+
252
+    // au cas ou : ne pas memoriser les champs sensibles
253
+    unset($GLOBALS['visiteur_session']['pass']);
254
+    unset($GLOBALS['visiteur_session']['htpass']);
255
+    unset($GLOBALS['visiteur_session']['alea_actuel']);
256
+    unset($GLOBALS['visiteur_session']['alea_futur']);
257
+    unset($GLOBALS['visiteur_session']['ldap_password']);
258
+
259
+    // creer la session au besoin
260
+    if (!isset($_COOKIE['spip_session'])) {
261
+        $session = charger_fonction('session', 'inc');
262
+        $spip_session = $session($row);
263
+    }
264
+
265
+    // reinjecter les preferences_auteur apres le reset de spip_session
266
+    // car utilisees au retour par auth_loger()
267
+    $r = @unserialize($row['prefs']);
268
+    $GLOBALS['visiteur_session']['prefs'] = ($r ?: []);
269
+    // si prefs pas definies, les definir par defaut
270
+    if (!isset($GLOBALS['visiteur_session']['prefs']['couleur'])) {
271
+        $GLOBALS['visiteur_session']['prefs']['couleur'] = 2;
272
+        $GLOBALS['visiteur_session']['prefs']['display'] = 2;
273
+        $GLOBALS['visiteur_session']['prefs']['display_navigation'] = 'navigation_avec_icones';
274
+        $GLOBALS['visiteur_session']['prefs']['display_outils'] = 'oui';
275
+    }
276
+
277
+    $GLOBALS['visiteur_session'] = pipeline(
278
+        'preparer_visiteur_session',
279
+        ['args' => ['row' => $row],
280
+        'data' => $GLOBALS['visiteur_session']]
281
+    );
282
+
283
+    // Etablir les droits selon le codage attendu
284
+    // dans ecrire/index.php ecrire/prive.php
285
+
286
+    // Pas autorise a acceder a ecrire ? renvoyer le tableau
287
+    // A noter : le premier appel a autoriser() a le bon gout
288
+    // d'initialiser $GLOBALS['visiteur_session']['restreint'],
289
+    // qui ne figure pas dans le fichier de session
290
+
291
+    if (!autoriser('ecrire')) {
292
+        return $row;
293
+    }
294
+
295
+    // autoriser('ecrire') ne laisse passer que les Admin et les Redac
296
+
297
+    auth_trace($row);
298
+
299
+    // Administrateurs
300
+    if (in_array($GLOBALS['connect_statut'], explode(',', _STATUT_AUTEUR_RUBRIQUE))) {
301
+        if (
302
+            isset($GLOBALS['visiteur_session']['restreint'])
303
+            and is_array($GLOBALS['visiteur_session']['restreint'])
304
+        ) {
305
+            $GLOBALS['connect_id_rubrique'] = $GLOBALS['visiteur_session']['restreint'];
306
+        }
307
+        if ($GLOBALS['connect_statut'] == '0minirezo') {
308
+            $GLOBALS['connect_toutes_rubriques'] = !$GLOBALS['connect_id_rubrique'];
309
+        }
310
+    }
311
+
312
+    // Pour les redacteurs, inc_version a fait l'initialisation minimale
313
+
314
+    return ''; // i.e. pas de pb.
315 315
 }
316 316
 
317 317
 /**
@@ -320,23 +320,23 @@  discard block
 block discarded – undo
320 320
  * @return string
321 321
  */
322 322
 function auth_a_loger() {
323
-	$redirect = generer_url_public('login', 'url=' . rawurlencode(self('&', true)), true);
324
-
325
-	// un echec au "bonjour" (login initial) quand le statut est
326
-	// inconnu signale sans doute un probleme de cookies
327
-	if (isset($_GET['bonjour'])) {
328
-		$redirect = parametre_url(
329
-			$redirect,
330
-			'var_erreur',
331
-			(!isset($GLOBALS['visiteur_session']['statut'])
332
-				? 'cookie'
333
-				: 'statut'
334
-			),
335
-			'&'
336
-		);
337
-	}
338
-
339
-	return $redirect;
323
+    $redirect = generer_url_public('login', 'url=' . rawurlencode(self('&', true)), true);
324
+
325
+    // un echec au "bonjour" (login initial) quand le statut est
326
+    // inconnu signale sans doute un probleme de cookies
327
+    if (isset($_GET['bonjour'])) {
328
+        $redirect = parametre_url(
329
+            $redirect,
330
+            'var_erreur',
331
+            (!isset($GLOBALS['visiteur_session']['statut'])
332
+                ? 'cookie'
333
+                : 'statut'
334
+            ),
335
+            '&'
336
+        );
337
+    }
338
+
339
+    return $redirect;
340 340
 }
341 341
 
342 342
 /**
@@ -348,19 +348,19 @@  discard block
 block discarded – undo
348 348
  * @param null|string $date
349 349
  */
350 350
 function auth_trace($row, $date = null) {
351
-	// Indiquer la connexion. A la minute pres ca suffit.
352
-	if (!is_numeric($connect_quand = $row['quand'] ?? '')) {
353
-		$connect_quand = strtotime($connect_quand);
354
-	}
351
+    // Indiquer la connexion. A la minute pres ca suffit.
352
+    if (!is_numeric($connect_quand = $row['quand'] ?? '')) {
353
+        $connect_quand = strtotime($connect_quand);
354
+    }
355 355
 
356
-	$date ??= date('Y-m-d H:i:s');
356
+    $date ??= date('Y-m-d H:i:s');
357 357
 
358
-	if (abs(strtotime($date) - $connect_quand) >= 60) {
359
-		sql_updateq('spip_auteurs', ['en_ligne' => $date], 'id_auteur=' . intval($row['id_auteur']));
360
-		$row['en_ligne'] = $date;
361
-	}
358
+    if (abs(strtotime($date) - $connect_quand) >= 60) {
359
+        sql_updateq('spip_auteurs', ['en_ligne' => $date], 'id_auteur=' . intval($row['id_auteur']));
360
+        $row['en_ligne'] = $date;
361
+    }
362 362
 
363
-	pipeline('trig_auth_trace', ['args' => ['row' => $row, 'date' => $date]]);
363
+    pipeline('trig_auth_trace', ['args' => ['row' => $row, 'date' => $date]]);
364 364
 }
365 365
 
366 366
 
@@ -386,28 +386,28 @@  discard block
 block discarded – undo
386 386
  * @return mixed
387 387
  */
388 388
 function auth_administrer($fonction, $args, $defaut = false) {
389
-	$auth_methode = array_shift($args);
390
-	$auth_methode = $auth_methode ?: 'spip'; // valeur par defaut au cas ou
391
-	if (
392
-		$auth = charger_fonction($auth_methode, 'auth', true)
393
-		and function_exists($f = "auth_{$auth_methode}_$fonction")
394
-	) {
395
-		$res = $f(...$args);
396
-	} else {
397
-		$res = $defaut;
398
-	}
399
-	$res = pipeline(
400
-		'auth_administrer',
401
-		[
402
-			'args' => [
403
-				'fonction' => $fonction,
404
-				'methode' => $auth_methode,
405
-				'args' => $args
406
-			],
407
-			'data' => $res
408
-		]
409
-	);
410
-	return $res;
389
+    $auth_methode = array_shift($args);
390
+    $auth_methode = $auth_methode ?: 'spip'; // valeur par defaut au cas ou
391
+    if (
392
+        $auth = charger_fonction($auth_methode, 'auth', true)
393
+        and function_exists($f = "auth_{$auth_methode}_$fonction")
394
+    ) {
395
+        $res = $f(...$args);
396
+    } else {
397
+        $res = $defaut;
398
+    }
399
+    $res = pipeline(
400
+        'auth_administrer',
401
+        [
402
+            'args' => [
403
+                'fonction' => $fonction,
404
+                'methode' => $auth_methode,
405
+                'args' => $args
406
+            ],
407
+            'data' => $res
408
+        ]
409
+    );
410
+    return $res;
411 411
 }
412 412
 
413 413
 /**
@@ -417,11 +417,11 @@  discard block
 block discarded – undo
417 417
  * @return array
418 418
  */
419 419
 function auth_formulaire_login($flux) {
420
-	foreach ($GLOBALS['liste_des_authentifications'] as $methode) {
421
-		$flux = auth_administrer('formulaire_login', [$methode, $flux], $flux);
422
-	}
420
+    foreach ($GLOBALS['liste_des_authentifications'] as $methode) {
421
+        $flux = auth_administrer('formulaire_login', [$methode, $flux], $flux);
422
+    }
423 423
 
424
-	return $flux;
424
+    return $flux;
425 425
 }
426 426
 
427 427
 
@@ -435,19 +435,19 @@  discard block
 block discarded – undo
435 435
  * @return string/bool
436 436
  */
437 437
 function auth_retrouver_login($login, $serveur = '') {
438
-	if (!spip_connect($serveur)) {
439
-		include_spip('inc/minipres');
440
-		echo minipres(_T('info_travaux_titre'), _T('titre_probleme_technique'));
441
-		exit;
442
-	}
443
-
444
-	foreach ($GLOBALS['liste_des_authentifications'] as $methode) {
445
-		if ($auteur = auth_administrer('retrouver_login', [$methode, $login, $serveur])) {
446
-			return $auteur;
447
-		}
448
-	}
449
-
450
-	return false;
438
+    if (!spip_connect($serveur)) {
439
+        include_spip('inc/minipres');
440
+        echo minipres(_T('info_travaux_titre'), _T('titre_probleme_technique'));
441
+        exit;
442
+    }
443
+
444
+    foreach ($GLOBALS['liste_des_authentifications'] as $methode) {
445
+        if ($auteur = auth_administrer('retrouver_login', [$methode, $login, $serveur])) {
446
+            return $auteur;
447
+        }
448
+    }
449
+
450
+    return false;
451 451
 }
452 452
 
453 453
 /**
@@ -462,34 +462,34 @@  discard block
 block discarded – undo
462 462
  * @return array
463 463
  */
464 464
 function auth_informer_login($login, $serveur = '') {
465
-	if (
466
-		!$login
467
-		or !$login_base = auth_retrouver_login($login, $serveur)
468
-		or !$row = sql_fetsel('*', 'spip_auteurs', 'login=' . sql_quote($login_base, $serveur, 'text'), '', '', '', '', $serveur)
469
-	) {
470
-		// generer de fausses infos, mais credibles, pour eviter une attaque
471
-		// https://core.spip.net/issues/1758 + https://core.spip.net/issues/3691
472
-
473
-		$row = [
474
-			'login' => $login,
475
-			'cnx' => '0',
476
-			'logo' => '',
477
-		];
478
-
479
-		return $row;
480
-	}
481
-
482
-	$prefs = @unserialize($row['prefs']);
483
-	$infos = [
484
-		'id_auteur' => $row['id_auteur'],
485
-		'login' => $row['login'],
486
-		'cnx' => (isset($prefs['cnx']) and $prefs['cnx'] === 'perma') ? '1' : '0',
487
-		'logo' => recuperer_fond('formulaires/inc-logo_auteur', $row),
488
-	];
489
-
490
-	verifier_visiteur();
491
-
492
-	return auth_administrer('informer_login', [$row['source'], $infos, $row, $serveur], $infos);
465
+    if (
466
+        !$login
467
+        or !$login_base = auth_retrouver_login($login, $serveur)
468
+        or !$row = sql_fetsel('*', 'spip_auteurs', 'login=' . sql_quote($login_base, $serveur, 'text'), '', '', '', '', $serveur)
469
+    ) {
470
+        // generer de fausses infos, mais credibles, pour eviter une attaque
471
+        // https://core.spip.net/issues/1758 + https://core.spip.net/issues/3691
472
+
473
+        $row = [
474
+            'login' => $login,
475
+            'cnx' => '0',
476
+            'logo' => '',
477
+        ];
478
+
479
+        return $row;
480
+    }
481
+
482
+    $prefs = @unserialize($row['prefs']);
483
+    $infos = [
484
+        'id_auteur' => $row['id_auteur'],
485
+        'login' => $row['login'],
486
+        'cnx' => (isset($prefs['cnx']) and $prefs['cnx'] === 'perma') ? '1' : '0',
487
+        'logo' => recuperer_fond('formulaires/inc-logo_auteur', $row),
488
+    ];
489
+
490
+    verifier_visiteur();
491
+
492
+    return auth_administrer('informer_login', [$row['source'], $infos, $row, $serveur], $infos);
493 493
 }
494 494
 
495 495
 
@@ -503,21 +503,21 @@  discard block
 block discarded – undo
503 503
  * @return mixed
504 504
  */
505 505
 function auth_identifier_login($login, $password, $serveur = '') {
506
-	$erreur = '';
507
-	foreach ($GLOBALS['liste_des_authentifications'] as $methode) {
508
-		if ($auth = charger_fonction($methode, 'auth', true)) {
509
-			$auteur = $auth($login, $password, $serveur);
510
-			if (is_array($auteur) and count($auteur)) {
511
-				spip_log("connexion de $login par methode $methode");
512
-				$auteur['auth'] = $methode;
513
-				return $auteur;
514
-			} elseif (is_string($auteur)) {
515
-				$erreur .= "$auteur ";
516
-			}
517
-		}
518
-	}
519
-
520
-	return $erreur;
506
+    $erreur = '';
507
+    foreach ($GLOBALS['liste_des_authentifications'] as $methode) {
508
+        if ($auth = charger_fonction($methode, 'auth', true)) {
509
+            $auteur = $auth($login, $password, $serveur);
510
+            if (is_array($auteur) and count($auteur)) {
511
+                spip_log("connexion de $login par methode $methode");
512
+                $auteur['auth'] = $methode;
513
+                return $auteur;
514
+            } elseif (is_string($auteur)) {
515
+                $erreur .= "$auteur ";
516
+            }
517
+        }
518
+    }
519
+
520
+    return $erreur;
521 521
 }
522 522
 
523 523
 /**
@@ -531,8 +531,8 @@  discard block
 block discarded – undo
531 531
  * @return string
532 532
  */
533 533
 function auth_url_retour_login($auth_methode, $login, $redirect = '', $serveur = '') {
534
-	$securiser_action = charger_fonction('securiser_action', 'inc');
535
-	return $securiser_action('auth', "$auth_methode/$login", $redirect, true);
534
+    $securiser_action = charger_fonction('securiser_action', 'inc');
535
+    return $securiser_action('auth', "$auth_methode/$login", $redirect, true);
536 536
 }
537 537
 
538 538
 /**
@@ -546,9 +546,9 @@  discard block
 block discarded – undo
546 546
  * @return mixed
547 547
  */
548 548
 function auth_terminer_identifier_login($auth_methode, $login, $serveur = '') {
549
-	$args = func_get_args();
550
-	$auteur = auth_administrer('terminer_identifier_login', $args);
551
-	return $auteur;
549
+    $args = func_get_args();
550
+    $auteur = auth_administrer('terminer_identifier_login', $args);
551
+    return $auteur;
552 552
 }
553 553
 
554 554
 /**
@@ -558,29 +558,29 @@  discard block
 block discarded – undo
558 558
  * @return bool
559 559
  */
560 560
 function auth_loger($auteur) {
561
-	if (!is_array($auteur) or !count($auteur)) {
562
-		return false;
563
-	}
564
-
565
-	// initialiser et poser le cookie de session
566
-	unset($_COOKIE['spip_session']);
567
-	if (auth_init_droits($auteur) === false) {
568
-		return false;
569
-	}
570
-
571
-	// initialiser les prefs
572
-	$p = $GLOBALS['visiteur_session']['prefs'];
573
-	$p['cnx'] = (isset($auteur['cookie']) and $auteur['cookie'] == 'oui') ? 'perma' : '';
574
-
575
-	sql_updateq(
576
-		'spip_auteurs',
577
-		['prefs' => serialize($p)],
578
-		'id_auteur=' . intval($auteur['id_auteur'])
579
-	);
580
-
581
-	//  bloquer ici le visiteur qui tente d'abuser de ses droits
582
-	verifier_visiteur();
583
-	return true;
561
+    if (!is_array($auteur) or !count($auteur)) {
562
+        return false;
563
+    }
564
+
565
+    // initialiser et poser le cookie de session
566
+    unset($_COOKIE['spip_session']);
567
+    if (auth_init_droits($auteur) === false) {
568
+        return false;
569
+    }
570
+
571
+    // initialiser les prefs
572
+    $p = $GLOBALS['visiteur_session']['prefs'];
573
+    $p['cnx'] = (isset($auteur['cookie']) and $auteur['cookie'] == 'oui') ? 'perma' : '';
574
+
575
+    sql_updateq(
576
+        'spip_auteurs',
577
+        ['prefs' => serialize($p)],
578
+        'id_auteur=' . intval($auteur['id_auteur'])
579
+    );
580
+
581
+    //  bloquer ici le visiteur qui tente d'abuser de ses droits
582
+    verifier_visiteur();
583
+    return true;
584 584
 }
585 585
 
586 586
 /**
@@ -590,8 +590,8 @@  discard block
 block discarded – undo
590 590
  * return void
591 591
  **/
592 592
 function auth_deloger() {
593
-	$logout = charger_fonction('logout', 'action');
594
-	$logout();
593
+    $logout = charger_fonction('logout', 'action');
594
+    $logout();
595 595
 }
596 596
 
597 597
 /**
@@ -605,8 +605,8 @@  discard block
 block discarded – undo
605 605
  * @return bool
606 606
  */
607 607
 function auth_autoriser_modifier_login($auth_methode, $serveur = '') {
608
-	$args = func_get_args();
609
-	return auth_administrer('autoriser_modifier_login', $args);
608
+    $args = func_get_args();
609
+    return auth_administrer('autoriser_modifier_login', $args);
610 610
 }
611 611
 
612 612
 /**
@@ -621,8 +621,8 @@  discard block
 block discarded – undo
621 621
  *  message d'erreur ou chaine vide si pas d'erreur
622 622
  */
623 623
 function auth_verifier_login($auth_methode, $new_login, $id_auteur = 0, $serveur = '') {
624
-	$args = func_get_args();
625
-	return auth_administrer('verifier_login', $args, '');
624
+    $args = func_get_args();
625
+    return auth_administrer('verifier_login', $args, '');
626 626
 }
627 627
 
628 628
 /**
@@ -635,8 +635,8 @@  discard block
 block discarded – undo
635 635
  * @return bool
636 636
  */
637 637
 function auth_modifier_login($auth_methode, $new_login, $id_auteur, $serveur = '') {
638
-	$args = func_get_args();
639
-	return auth_administrer('modifier_login', $args);
638
+    $args = func_get_args();
639
+    return auth_administrer('modifier_login', $args);
640 640
 }
641 641
 
642 642
 /**
@@ -651,8 +651,8 @@  discard block
 block discarded – undo
651 651
  *  succès ou échec
652 652
  */
653 653
 function auth_autoriser_modifier_pass($auth_methode, $serveur = '') {
654
-	$args = func_get_args();
655
-	return auth_administrer('autoriser_modifier_pass', $args);
654
+    $args = func_get_args();
655
+    return auth_administrer('autoriser_modifier_pass', $args);
656 656
 }
657 657
 
658 658
 /**
@@ -668,8 +668,8 @@  discard block
 block discarded – undo
668 668
  *  message d'erreur ou chaine vide si pas d'erreur
669 669
  */
670 670
 function auth_verifier_pass($auth_methode, $login, $new_pass, $id_auteur = 0, $serveur = '') {
671
-	$args = func_get_args();
672
-	return auth_administrer('verifier_pass', $args, '');
671
+    $args = func_get_args();
672
+    return auth_administrer('verifier_pass', $args, '');
673 673
 }
674 674
 
675 675
 /**
@@ -685,8 +685,8 @@  discard block
 block discarded – undo
685 685
  *  succes ou echec
686 686
  */
687 687
 function auth_modifier_pass($auth_methode, $login, $new_pass, $id_auteur, $serveur = '') {
688
-	$args = func_get_args();
689
-	return auth_administrer('modifier_pass', $args);
688
+    $args = func_get_args();
689
+    return auth_administrer('modifier_pass', $args);
690 690
 }
691 691
 
692 692
 /**
@@ -702,24 +702,24 @@  discard block
 block discarded – undo
702 702
  * @return void
703 703
  */
704 704
 function auth_synchroniser_distant(
705
-	$auth_methode = true,
706
-	$id_auteur = 0,
707
-	$champs = [],
708
-	$options = [],
709
-	$serveur = ''
705
+    $auth_methode = true,
706
+    $id_auteur = 0,
707
+    $champs = [],
708
+    $options = [],
709
+    $serveur = ''
710 710
 ) {
711
-	$args = func_get_args();
712
-	if ($auth_methode === true or (isset($options['all']) and $options['all'] == true)) {
713
-		$options['all'] = true; // ajouter une option all=>true pour chaque auth
714
-		$args = [true, $id_auteur, $champs, $options, $serveur];
715
-		foreach ($GLOBALS['liste_des_authentifications'] as $methode) {
716
-			array_shift($args);
717
-			array_unshift($args, $methode);
718
-			auth_administrer('synchroniser_distant', $args);
719
-		}
720
-	} else {
721
-		auth_administrer('synchroniser_distant', $args);
722
-	}
711
+    $args = func_get_args();
712
+    if ($auth_methode === true or (isset($options['all']) and $options['all'] == true)) {
713
+        $options['all'] = true; // ajouter une option all=>true pour chaque auth
714
+        $args = [true, $id_auteur, $champs, $options, $serveur];
715
+        foreach ($GLOBALS['liste_des_authentifications'] as $methode) {
716
+            array_shift($args);
717
+            array_unshift($args, $methode);
718
+            auth_administrer('synchroniser_distant', $args);
719
+        }
720
+    } else {
721
+        auth_administrer('synchroniser_distant', $args);
722
+    }
723 723
 }
724 724
 
725 725
 
@@ -732,45 +732,45 @@  discard block
 block discarded – undo
732 732
  * @return array|bool
733 733
  */
734 734
 function lire_php_auth($login, $pw, $serveur = '') {
735
-	if (
736
-		!$login
737
-		or !$login = auth_retrouver_login($login, $serveur)
738
-	) {
739
-		return false;
740
-	}
741
-
742
-	$row = sql_fetsel('*', 'spip_auteurs', 'login=' . sql_quote($login, $serveur, 'text'), '', '', '', '', $serveur);
743
-
744
-	if (!$row) {
745
-		if (
746
-			include_spip('inc/auth')
747
-			and auth_ldap_connect($serveur)
748
-			and $auth_ldap = charger_fonction('ldap', 'auth', true)
749
-		) {
750
-			return $auth_ldap($login, $pw, $serveur, true);
751
-		}
752
-
753
-		return false;
754
-	}
755
-	// su pas de source definie
756
-	// ou auth/xxx introuvable, utiliser 'spip'
757
-	if (
758
-		!$auth_methode = $row['source']
759
-		or !$auth = charger_fonction($auth_methode, 'auth', true)
760
-	) {
761
-		$auth = charger_fonction('spip', 'auth', true);
762
-	}
763
-
764
-	$auteur = '';
765
-	if ($auth) {
766
-		$auteur = $auth($login, $pw, $serveur, true);
767
-	}
768
-	// verifier que ce n'est pas un message d'erreur
769
-	if (is_array($auteur) and count($auteur)) {
770
-		return $auteur;
771
-	}
772
-
773
-	return false;
735
+    if (
736
+        !$login
737
+        or !$login = auth_retrouver_login($login, $serveur)
738
+    ) {
739
+        return false;
740
+    }
741
+
742
+    $row = sql_fetsel('*', 'spip_auteurs', 'login=' . sql_quote($login, $serveur, 'text'), '', '', '', '', $serveur);
743
+
744
+    if (!$row) {
745
+        if (
746
+            include_spip('inc/auth')
747
+            and auth_ldap_connect($serveur)
748
+            and $auth_ldap = charger_fonction('ldap', 'auth', true)
749
+        ) {
750
+            return $auth_ldap($login, $pw, $serveur, true);
751
+        }
752
+
753
+        return false;
754
+    }
755
+    // su pas de source definie
756
+    // ou auth/xxx introuvable, utiliser 'spip'
757
+    if (
758
+        !$auth_methode = $row['source']
759
+        or !$auth = charger_fonction($auth_methode, 'auth', true)
760
+    ) {
761
+        $auth = charger_fonction('spip', 'auth', true);
762
+    }
763
+
764
+    $auteur = '';
765
+    if ($auth) {
766
+        $auteur = $auth($login, $pw, $serveur, true);
767
+    }
768
+    // verifier que ce n'est pas un message d'erreur
769
+    if (is_array($auteur) and count($auteur)) {
770
+        return $auteur;
771
+    }
772
+
773
+    return false;
774 774
 }
775 775
 
776 776
 /**
@@ -786,21 +786,21 @@  discard block
 block discarded – undo
786 786
  * @param string $lien
787 787
  */
788 788
 function ask_php_auth($pb, $raison, $retour = '', $url = '', $re = '', $lien = '') {
789
-	@Header('WWW-Authenticate: Basic realm="espace prive"');
790
-	@Header('HTTP/1.0 401 Unauthorized');
791
-	$corps = '';
792
-	$public = generer_url_public();
793
-	$ecrire = generer_url_ecrire();
794
-	$retour = $retour ?: _T('icone_retour');
795
-	$corps .= "<p>$raison</p>[<a href='$public'>$retour</a>] ";
796
-	if ($url) {
797
-		$corps .= "[<a href='" . generer_url_action('cookie', "essai_auth_http=oui&$url") . "'>$re</a>]";
798
-	}
799
-
800
-	if ($lien) {
801
-		$corps .= " [<a href='$ecrire'>" . _T('login_espace_prive') . '</a>]';
802
-	}
803
-	include_spip('inc/minipres');
804
-	echo minipres($pb, $corps);
805
-	exit;
789
+    @Header('WWW-Authenticate: Basic realm="espace prive"');
790
+    @Header('HTTP/1.0 401 Unauthorized');
791
+    $corps = '';
792
+    $public = generer_url_public();
793
+    $ecrire = generer_url_ecrire();
794
+    $retour = $retour ?: _T('icone_retour');
795
+    $corps .= "<p>$raison</p>[<a href='$public'>$retour</a>] ";
796
+    if ($url) {
797
+        $corps .= "[<a href='" . generer_url_action('cookie', "essai_auth_http=oui&$url") . "'>$re</a>]";
798
+    }
799
+
800
+    if ($lien) {
801
+        $corps .= " [<a href='$ecrire'>" . _T('login_espace_prive') . '</a>]';
802
+    }
803
+    include_spip('inc/minipres');
804
+    echo minipres($pb, $corps);
805
+    exit;
806 806
 }
Please login to merge, or discard this patch.