1
1
<?php
2
+
2
3
/**
3
4
* Plugin Authentification CAS
4
5
* @copyright 2010 MTECT
37
38
$ ci_id_serveur_auth = '' ;
38
39
39
40
// Cas classique (sans serveurs CAS additionnels)
40
- if ($ ci_nbre_serveurs_additionnels< 1 ) {
41
+ if ($ ci_nbre_serveurs_additionnels < 1 ) {
41
42
42
43
// configure phpCAS
43
44
cicas_configure_phpCAS ();
44
-
45
+
45
46
// forcer l'authentication CAS
46
47
phpCAS::forceAuthentication ();
47
-
48
48
} else {
49
- // Cas avec serveurs CAS additionnels
49
+ // Cas avec serveurs CAS additionnels
50
50
$ request_cicas = _request ('cicas ' );
51
51
52
52
// Memoriser, le cas echeant, le choix de l'utilisateur dans un cookie
53
- if (_request ('memoriser ' ) AND _request ('memoriser ' )== 'oui ' ){
54
- if ($ request_cicas AND ($ request_cicas== 'oui ' OR intval ($ request_cicas )>= 1 )){
53
+ if (_request ('memoriser ' ) and _request ('memoriser ' ) == 'oui ' ) {
54
+ if ($ request_cicas and ($ request_cicas == 'oui ' or intval ($ request_cicas ) >= 1 )) {
55
55
include_spip ('inc/cookie ' );
56
56
spip_setcookie ('cicas_choix ' , $ request_cicas , time () + 365 * 24 * 3600 );
57
57
}
58
58
}
59
59
60
60
// authentification CAS demandee par un clic sur le lien
61
- if ($ request_cicas AND intval ($ request_cicas )>= 1 ) {
61
+ if ($ request_cicas and intval ($ request_cicas ) >= 1 ) {
62
62
$ ci_id_serveur_auth = intval ($ request_cicas );
63
63
cicas_configure_phpCAS ($ ci_id_serveur_auth );
64
64
phpCAS::forceAuthentication ();
72
72
// et l'identifiant de l'utilisateur renvoye par CAS peut etre lu avec phpCAS::getUser().
73
73
74
74
$ ci_cas_userid = '' ;
75
- if ($ ci_cas_userid= phpCAS::getUser ()) {
76
-
75
+ if ($ ci_cas_userid = phpCAS::getUser ()) {
76
+
77
77
$ auteur = array ();
78
78
$ auteur = cicas_verifier_identifiant ($ ci_cas_userid );
79
79
80
80
if (!isset ($ auteur ['id_auteur ' ])) {
81
-
81
+
82
82
// Lire la configuration pour cette session
83
- $ tableau_config = cicas_lire_meta (0 ,false ,true );
84
-
83
+ $ tableau_config = cicas_lire_meta (0 , false , true );
84
+
85
85
// compatibilit� avec les anciennes adresses email
86
- if (!isset ($ tableau_config ['cicasuid ' ])
87
- OR $ tableau_config ['cicasuid ' ]==""
88
- OR $ tableau_config ['cicasuid ' ]=="email " ) {
86
+ if (
87
+ !isset ($ tableau_config ['cicasuid ' ])
88
+ or $ tableau_config ['cicasuid ' ] == ""
89
+ or $ tableau_config ['cicasuid ' ] == "email "
90
+ ) {
89
91
90
92
$ ci_pos = strpos ($ ci_cas_userid , '@ ' );
91
- if ($ ci_pos AND $ ci_pos > 0 ) {
92
- $ ci_tableau_email = explode ('@ ' ,$ ci_cas_userid );
93
+ if ($ ci_pos and $ ci_pos > 0 ) {
94
+ $ ci_tableau_email = explode ('@ ' , $ ci_cas_userid );
93
95
$ ci_nom_mail = strtolower ($ ci_tableau_email [0 ]);
94
96
$ ci_domaine_mail = strtolower ($ ci_tableau_email [1 ]);
95
97
96
98
// compatibilite par defaut
97
99
$ cicasmailcompatible = array ('equipement.gouv.fr ' => 'developpement-durable.gouv.fr ' );
98
-
100
+
99
101
// compatibilite figurant dans le fichier de parametrage config/_config_cas.php
100
102
if (isset ($ tableau_config ['cicasmailcompatible ' ])) {
101
103
if (is_array ($ tableau_config ['cicasmailcompatible ' ])) {
102
104
$ cicasmailcompatible = $ tableau_config ['cicasmailcompatible ' ];
103
105
}
104
106
}
105
-
106
- foreach ($ cicasmailcompatible as $ cle=> $ valeur ) {
107
- if ($ ci_domaine_mail== $ valeur ) {
108
- $ auteur = cicas_verifier_identifiant ($ ci_nom_mail. '@ ' . $ cle );
107
+
108
+ foreach ($ cicasmailcompatible as $ cle => $ valeur ) {
109
+ if ($ ci_domaine_mail == $ valeur ) {
110
+ $ auteur = cicas_verifier_identifiant ($ ci_nom_mail . '@ ' . $ cle );
109
111
if (isset ($ auteur ['id_auteur ' ]))
110
112
break ;
111
113
}
112
114
}
113
115
}
114
116
}
115
-
116
117
}
117
118
118
119
// Si l'authentification sur ce serveur CAS a reussi mais que l'auteur n'existe pas dans SPIP
119
120
// le creer automatiquement si le parametrage l'autorise
120
- if (!isset ($ auteur ['id_auteur ' ]) AND isset ($ tableau_config ['cicas_creer_auteur ' ]) AND $ tableau_config ['cicas_creer_auteur ' ]){
121
+ if (!isset ($ auteur ['id_auteur ' ]) and isset ($ tableau_config ['cicas_creer_auteur ' ]) and $ tableau_config ['cicas_creer_auteur ' ]) {
121
122
$ c = array ();
122
123
$ c ['login ' ] = '' ;
123
124
$ c ['pass ' ] = '' ;
124
125
$ c ['webmestre ' ] = 'non ' ;
125
- $ c ['statut ' ] = $ tableau_config ['cicas_creer_auteur ' ];
126
- $ c ['source ' ] = 'cas ' ;
126
+ $ c ['statut ' ] = $ tableau_config ['cicas_creer_auteur ' ];
127
+ $ c ['source ' ] = 'cas ' ;
127
128
128
- if ($ tableau_config ['cicasuid ' ]== '' OR $ tableau_config ['cicasuid ' ]== 'email ' ){
129
+ if ($ tableau_config ['cicasuid ' ] == '' or $ tableau_config ['cicasuid ' ] == 'email ' ) {
129
130
$ c ['email ' ] = strtolower ($ ci_cas_userid );
130
- $ ci_tableau_cicasuid = explode ('@ ' ,$ ci_cas_userid );
131
+ $ ci_tableau_cicasuid = explode ('@ ' , $ ci_cas_userid );
131
132
$ c ['nom ' ] = strtolower ($ ci_tableau_cicasuid [0 ]);
132
- $ c ['login ' ] = $ c ['nom ' ];
133
- } else {
133
+ $ c ['login ' ] = $ c ['nom ' ];
134
+ } else {
134
135
$ c ['nom ' ] = $ ci_cas_userid ;
135
- $ c ['login ' ] = $ ci_cas_userid ;
136
- }
137
-
138
- // important (suite aux tests)
139
- $ couples = $ c ;
140
-
141
- // inserer l'auteur
142
- $ id_auteur = sql_insertq ("spip_auteurs " , $ couples );
143
-
144
- // tracer le cas echeant
145
- if (defined ('_DIR_PLUGIN_CITRACE ' )){
146
- $ commentaire = interdire_scripts (supprimer_numero ($ couples ['nom ' ]))
147
- . ' ( ' . interdire_scripts ($ couples ['email ' ]). ') ' . ' - statut: ' . $ couples ['statut ' ];
148
- if ($ citrace = charger_fonction ('citrace ' , 'inc ' ))
149
- $ citrace ('auteur ' , $ id_auteur , "creation automatique de l'auteur " , $ commentaire );
150
- }
151
-
136
+ $ c ['login ' ] = $ ci_cas_userid ;
137
+ }
138
+
139
+ // important (suite aux tests)
140
+ $ couples = $ c ;
141
+
142
+ // inserer l'auteur
143
+ $ id_auteur = sql_insertq ("spip_auteurs " , $ couples );
144
+
145
+ // tracer le cas echeant
146
+ if (defined ('_DIR_PLUGIN_CITRACE ' )) {
147
+ $ commentaire = interdire_scripts (supprimer_numero ($ couples ['nom ' ]))
148
+ . ' ( ' . interdire_scripts ($ couples ['email ' ]) . ') ' . ' - statut: ' . $ couples ['statut ' ];
149
+ if ($ citrace = charger_fonction ('citrace ' , 'inc ' ))
150
+ $ citrace ('auteur ' , $ id_auteur , "creation automatique de l'auteur " , $ commentaire );
151
+ }
152
+
152
153
// seconde tentative
153
154
$ auteur = cicas_verifier_identifiant ($ ci_cas_userid );
154
155
}
157
158
if (!isset ($ auteur ['id_auteur ' ])) {
158
159
// Envoyer au pipeline
159
160
$ cipipeline = true ;
160
- if (@is_readable ($ charger = _CACHE_PIPELINES )){
161
+ if (@is_readable ($ charger = _CACHE_PIPELINES )) {
161
162
include_once ($ charger );
162
163
if (!function_exists ('execute_pipeline_cicas ' ))
163
164
$ cipipeline = false ;
164
165
}
165
-
166
+
166
167
if ($ cipipeline )
167
- $ auteur = pipeline ('cicas ' ,
168
+ $ auteur = pipeline (
169
+ 'cicas ' ,
168
170
array (
169
171
'args ' => $ ci_cas_userid ,
170
172
'data ' => array ()
171
173
)
172
174
);
173
- }
175
+ }
174
176
175
177
if (isset ($ auteur ['id_auteur ' ])) {
176
178
180
182
// bloquer ici le visiteur qui tente d'abuser de ses droits
181
183
if (isset ($ auteur ['statut ' ])) {
182
184
if (cicas_is_url_prive ($ cible )) {
183
- if ($ auteur ['statut ' ]== '6forum ' ){
185
+ if ($ auteur ['statut ' ] == '6forum ' ) {
184
186
$ ciredirect = generer_url_public ("cicas_erreur3 " );
185
187
// redirection immediate
186
188
redirige_par_entete ($ ciredirect );
187
189
}
188
190
}
189
191
}
190
192
191
- // memorise ci_id_serveur_auth a cause des redirections
192
- if ($ ci_id_serveur_auth )
193
- $ auteur ['cicas_id_serveur ' ] = $ ci_id_serveur_auth ;
194
-
193
+ // memorise ci_id_serveur_auth a cause des redirections
194
+ if ($ ci_id_serveur_auth )
195
+ $ auteur ['cicas_id_serveur ' ] = $ ci_id_serveur_auth ;
196
+
195
197
// on a ete authentifie, construire la session
196
- // en gerant la duree demandee pour son cookie
197
- // if ($session_remember !== NULL)
198
- // $auteur['cookie'] = $session_remember;
198
+ // en gerant la duree demandee pour son cookie
199
+ // if ($session_remember !== NULL)
200
+ // $auteur['cookie'] = $session_remember;
199
201
$ session = charger_fonction ('session ' , 'inc ' );
200
202
$ session ($ auteur );
201
-
203
+
202
204
// Si on est admin, poser le cookie de correspondance
203
205
if (isset ($ auteur ['statut ' ])) {
204
206
if ($ auteur ['statut ' ] == '0minirezo ' ) {
205
207
include_spip ('inc/cookie ' );
206
- spip_setcookie ('spip_admin ' , '@ ' . $ auteur ['login ' ],time () + 7 * 24 * 3600 );
208
+ spip_setcookie ('spip_admin ' , '@ ' . $ auteur ['login ' ], time () + 7 * 24 * 3600 );
207
209
}
208
210
}
209
-
211
+
210
212
// Si on est connecte, envoyer vers la destination
211
213
if ($ cible )
212
214
$ ciredirect = $ cible ;
213
-
214
215
} else {
215
216
// Si l'auteur a un compte CAS qui n'existe pas dans la base SPIP
216
217
$ ciredirect = generer_url_public ("cicas_erreur2 " );
217
218
}
218
-
219
219
} else {
220
220
$ ciredirect = generer_url_public ("cicas_erreur1 " );
221
221
}
222
222
223
- if (!headers_sent ($ filename , $ linenum )){
224
- redirige_par_entete ($ ciredirect );
225
- }else {
226
- // si les entetes ont deja ete envoyee, redirection par une page
227
- echo '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> ' ,"\n" ,
228
- html_lang_attributes (),'
223
+ if (!headers_sent ($ filename , $ linenum )) {
224
+ redirige_par_entete ($ ciredirect );
225
+ } else {
226
+ // si les entetes ont deja ete envoyee, redirection par une page
227
+ echo '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> ' , "\n" ,
228
+ html_lang_attributes (), '
229
229
<head><title>Error</title>
230
230
</head>
231
231
<body>
232
- <h1>Error : headers already sent by file '. $ filename . ', line ' . $ linenum. '</h1>
232
+ <h1>Error : headers already sent by file ' . $ filename . ', line ' . $ linenum . '</h1>
233
233
<a href=" ' ,
234
- quote_amp (htmlentities ($ ciredirect )),
235
- '"> ' ,
236
- _T ('navigateur_pas_redirige ' ),
237
- '</a></body></html> ' ;
234
+ quote_amp (htmlentities ($ ciredirect )),
235
+ '"> ' ,
236
+ _T ('navigateur_pas_redirige ' ),
237
+ '</a></body></html> ' ;
238
238
239
239
exit ;
240
-
241
240
}
242
-
243
- ?>
0 commit comments