Subversion Repositories Applications.papyrus

Rev

Rev 1841 | Rev 2084 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1841 Rev 2079
Line 1... Line -...
1
<?php
-
 
2
/*vim: set expandtab tabstop=4 shiftwidth=4: */ 
-
 
3
// +------------------------------------------------------------------------------------------------------+
-
 
4
// | PHP version 4.1                                                                                      |
-
 
5
// +------------------------------------------------------------------------------------------------------+
-
 
6
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org)                                         |
-
 
7
// +------------------------------------------------------------------------------------------------------+
-
 
8
// | This library is free software; you can redistribute it and/or                                        |
-
 
9
// | modify it under the terms of the GNU Lesser General Public                                           |
-
 
10
// | License as published by the Free Software Foundation; either                                         |
-
 
11
// | version 2.1 of the License, or (at your option) any later version.                                   |
-
 
12
// |                                                                                                      |
-
 
13
// | This library is distributed in the hope that it will be useful,                                      |
-
 
14
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
-
 
15
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU                                    |
-
 
16
// | Lesser General Public License for more details.                                                      |
-
 
17
// |                                                                                                      |
-
 
18
// | You should have received a copy of the GNU Lesser General Public                                     |
-
 
19
// | License along with this library; if not, write to the Free Software                                  |
-
 
20
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
-
 
21
// +------------------------------------------------------------------------------------------------------+
-
 
22
// CVS : $Id: identification.php,v 1.38 2008-05-22 15:05:54 alexandre_tb Exp $
-
 
23
/**
-
 
24
* Applette : identification
-
 
25
*
-
 
26
* Génère un formulaire les champs nécessaires pour s'identifier.
-
 
27
* Nécessite :
-
 
28
* - Variable globale de Génésia.
-
 
29
* - Pear Auth
-
 
30
* - Pear Net_URL
-
 
31
*
-
 
32
* A faire : remplacer le formulaire par un QuickForm
-
 
33
*
-
 
34
*@package Applette
-
 
35
*@subpackage Identification
-
 
36
//Auteur original :
-
 
37
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
-
 
38
//Autres auteurs :
-
 
39
*@author        Aucun
-
 
40
*@copyright     Tela-Botanica 2000-2004
-
 
41
*@version       $Revision: 1.38 $ $Date: 2008-05-22 15:05:54 $
-
 
42
// +------------------------------------------------------------------------------------------------------+
-
 
43
*/
-
 
44
 
-
 
45
// +------------------------------------------------------------------------------------------------------+
-
 
46
// |                                            ENTÊTE du PROGRAMME                                       |
-
 
47
// +------------------------------------------------------------------------------------------------------+
-
 
48
$GLOBALS['_GEN_commun']['info_applette_nom_fonction'] = 'afficherFormIdentification';
-
 
49
$GLOBALS['_GEN_commun']['info_applette_balise'] = 	'(?:<!-- '.$GLOBALS['_GEN_commun']['balise_prefixe'].'(IDENTIFICATION) -->|'.
-
 
50
													'\{\{[Ii]dentification'.
-
 
51
													'(?:\s*'.
-
 
52
														'(?:'.
-
 
53
															'(template=".*")|'.
-
 
54
														')'.
-
 
55
													')+'.
-
 
56
													'\s*\}\})';
-
 
57
 
-
 
58
/** Inclusion du fichier de configuration de cette applette.*/
-
 
59
require_once GEN_CHEMIN_APPLETTE.'identification'.GEN_SEP.'configuration'.GEN_SEP.'iden_config.inc.php';
-
 
60
 
-
 
61
// Inclusion des fichiers de traduction de l'applette.
-
 
62
if (file_exists(IDEN_CHEMIN_LANGUE.'iden_langue_'.$GLOBALS['_GEN_commun']['i18n'].'.inc.php')) {
-
 
63
    /** Inclusion du fichier de traduction suite à la transaction avec le navigateur.*/
-
 
64
    require_once IDEN_CHEMIN_LANGUE.'iden_langue_'.$GLOBALS['_GEN_commun']['i18n'].'.inc.php';
-
 
65
} else {
-
 
66
    /** Inclusion du fichier de traduction par défaut.*/
-
 
67
    require_once IDEN_CHEMIN_LANGUE.'iden_langue_'.IDEN_I18N_DEFAUT.'.inc.php';
-
 
68
}
-
 
69
// +------------------------------------------------------------------------------------------------------+
-
 
70
// |                                            CORPS du PROGRAMME                                        |
-
 
71
// +------------------------------------------------------------------------------------------------------+
-
 
72
 
-
 
73
// Si le site utilise une authentification.
-
 
74
if ($GLOBALS['_GEN_commun']['info_auth']->gsa_ce_type_auth == 1) {
-
 
75
	$cookie_persistant_nom = session_name().'-memo';
-
 
76
    // Si un formulaire nous renvoie en POST une variable "deconnexion", nous délogons l'utilisateur.
-
 
77
    if ((isset($_REQUEST['deconnexion']) || isset($_REQUEST['logout']))) {
-
 
78
		$GLOBALS['_GEN_commun']['pear_auth']->logout();
-
 
79
		// Destruction du cookie de session de Papyrus : est ce utile?
-
 
80
		setcookie(session_name(), session_id(), time()-3600, '/');
-
 
81
		// Destruction du cookie de permanence de l'identitification de Papyrus
-
 
82
		setcookie($cookie_persistant_nom, '', time()-3600, '/');
-
 
83
		//$GLOBALS['_GEN_commun']['pear_auth']->start();
-
 
84
    } else {
-
 
85
    	if (isset($_REQUEST['connexion'])) {
-
 
86
	    	// Si un formulaire nous renvoie en POST une variable "connexion", nous logons l'utilisateur.
-
 
87
			// Nous vérifions que l'utilisateur est coché "Mémoriser mon compte"
-
 
88
			if (isset($_POST['persistant']) && $_POST['persistant'] == 'o' && IDEN_AUTH_SESSION_DUREE != 0) {
-
 
89
		        // Expiration si l'utilisateur ne referme pas son navigateur
-
 
90
				$GLOBALS['_GEN_commun']['pear_auth']->setExpire((int)IDEN_AUTH_SESSION_DUREE);
-
 
91
				// Création d'un cookie pour rendre permanente l'identification de Papyrus
-
 
92
				$cookie_val = md5($_POST['password']).$_POST['username'];
-
 
93
				setcookie($cookie_persistant_nom, $cookie_val, (int)IDEN_AUTH_SESSION_DUREE, '/');
-
 
94
			}
-
 
95
	    } else if (isset($_COOKIE[$cookie_persistant_nom])) {
-
 
96
			// Si un cookie existe, nous loggons l'utilisateur.
-
 
97
			$GLOBALS['_GEN_commun']['pear_auth']->password = substr($_COOKIE[$cookie_persistant_nom], 0, 32 );
-
 
98
			$GLOBALS['_GEN_commun']['pear_auth']->username = substr($_COOKIE[$cookie_persistant_nom], 32);
-
 
99
			// Nous sommes obligés de crypter le mot de passe
-
 
100
			if (isset($GLOBALS['_GEN_commun']['pear_auth']->storage_options)) {
-
 
101
				$GLOBALS['_GEN_commun']['pear_auth']->storage_options['cryptType'] = 'none';
-
 
102
    		}
-
 
103
    		if (isset($GLOBALS['_GEN_commun']['pear_auth']->storage->options)) {
-
 
104
				$GLOBALS['_GEN_commun']['pear_auth']->storage->options['cryptType'] = 'none';
-
 
105
			}
-
 
106
			
-
 
107
		}
-
 
108
		$GLOBALS['_GEN_commun']['pear_auth']->login();
-
 
109
		//echo '<pre>'.print_r($GLOBALS['_GEN_commun']['pear_auth'], true).'</pre>';
-
 
110
    }
-
 
111
}
-
 
112
 
-
 
113
// +------------------------------------------------------------------------------------------------------+
-
 
114
// |                                           LISTE de FONCTIONS                                         |
-
 
115
// +------------------------------------------------------------------------------------------------------+
-
 
116
 
-
 
117
/** Fonction afficherFormIdentification() - Retourne une formulaire pour s'identifier.
-
 
118
*
-
 
119
* Retourne un formulaire d'identificatin ou de déconnexion suivant que l'utilisateur est
-
 
120
* identifié ou pas.
-
 
121
*
-
 
122
* @param  array  tableau d'éventuel arguments présent dans la balise transmis à la fonction. 
-
 
123
* @param  array  tableau global de Papyrus.
-
 
124
* @return string formulaire de connexion ou de déconnexion.
-
 
125
*/
-
 
126
function afficherFormIdentification($tab_arguments, $_GEN_commun)
-
 
127
{
-
 
128
    // Extraction des arguments s il y a
-
 
129
    $balise = $tab_arguments[0];
-
 
130
    $tab_arguments = $tab_arguments;
-
 
131
	unset($tab_arguments[0]);
-
 
132
    foreach($tab_arguments as $argument) {
-
 
133
    	if ($argument != '') {
-
 
134
	    	$tab_parametres = explode('=', $argument, 2);
-
 
135
	    	if (isset($tab_parametres[1])) $options[$tab_parametres[0]] = trim($tab_parametres[1], '"');
-
 
136
    	}
-
 
137
    }
-
 
138
    if (!isset($options['template'])) {
-
 
139
    	$options['template'] = IDEN_CHEMIN_APPLETTE.'squelettes/'.IDEN_SQUELETTE_DEFAUT;
-
 
140
    }
-
 
141
    // Initialisation de variable.
-
 
142
    $retour = '';
-
 
143
    // Gestion des attributs "id" des balises XHTML uniques
-
 
144
    $id_xhtml = '';
-
 
145
    if ( $GLOBALS['_PAPYRUS_']['applette']['comptage']['afficherFormIdentification'] > 1) {
-
 
146
    	$id_xhtml =  $GLOBALS['_PAPYRUS_']['applette']['comptage']['afficherFormIdentification'];
-
 
147
    }
-
 
148
    $objet_pear_auth =& $_GEN_commun['pear_auth'];
-
 
149
    $objet_pear_db =& $_GEN_commun['pear_db'];
-
 
150
    $InfoAuthBdd =& $_GEN_commun['info_auth_bdd'];
-
 
151
    $objet_url =& $_GEN_commun['url'];
-
 
152
    $url = $objet_url->getURL();
-
 
153
    $objet_url->addQueryString('logout', 1);
-
 
154
    $url_deconnect = $objet_url->getURL();
-
 
155
    $objet_url->removeQueryString('logout');
-
 
156
    // Récupération des valeurs pour le login et le mot de passe
-
 
157
    $mot_de_passe = (! isset($_POST['password']))    ? '' : $_POST['password'];
-
 
158
    $login        = (! isset($_POST['username']))    ? '' : $_POST['username'];
-
 
159
    
-
 
160
    // ATTENTION : Partie à supprimer une fois les mise à jour effectué dans l'annuaire de Tela Botanica
-
 
161
    // Devrait être déplacer dans l'appli inscription de Tela.
-
 
162
    if (isset($InfoAuthBdd->gsab_nom_table) && $InfoAuthBdd->gsab_nom_table == 'annuaire_tela') {
-
 
163
        verification_mot_de_passe($objet_pear_db, $mot_de_passe, $login);
-
 
164
        if (isset($_POST['connexion'])) {
-
 
165
            $objet_pear_auth->login();
-
 
166
        }
-
 
167
    }
-
 
168
        
-
 
169
	// L'utilisateur a essayé de s'identifier mais a échoué
-
 
170
	$url_erreur = false;
-
 
171
	if ($login != '') {
-
 
172
		$url_erreur = '#';
-
 
173
		if (isset($InfoAuthBdd->url_erreur)) {
-
 
174
			$url_erreur = $InfoAuthBdd->url_erreur;
-
 
175
		} else if (isset($InfoAuthBdd->url_inscription)) {
-
 
176
			$url_erreur = $InfoAuthBdd->url_inscription;
-
 
177
		}
-
 
178
	}
-
 
179
	$url_inscription_aide = '';
-
 
180
	$url_page_inscription = '';
-
 
181
	$url_page_modif_inscription = '';
-
 
182
	if (isset($InfoAuthBdd->url_inscription)) {
-
 
183
    	$url_page_inscription = $InfoAuthBdd->url_inscription;
-
 
184
	}
-
 
185
	if (isset($InfoAuthBdd->url_inscription_modif)) {
-
 
186
    	$url_page_modif_inscription = $InfoAuthBdd->url_inscription_modif;
-
 
187
	}
-
 
188
	if (isset($InfoAuthBdd->url_inscription_aide)) {
-
 
189
		$url_inscription_aide = $InfoAuthBdd->url_inscription_aide;
-
 
190
	}
-
 
191
	$chp_personne_prenom='';
-
 
192
    if (isset($InfoAuthBdd->chp_personne_prenom)) {
-
 
193
        $chp_personne_prenom = $objet_pear_auth->getAuthData($InfoAuthBdd->chp_personne_prenom);
-
 
194
    }
-
 
195
    $chp_personne_nom='';
-
 
196
    if (isset($InfoAuthBdd->chp_personne_nom)) {
-
 
197
    	$chp_personne_nom = $objet_pear_auth->getAuthData($InfoAuthBdd->chp_personne_nom);
-
 
198
    }                
-
 
199
    $chp_structure='';           
-
 
200
    if (isset($InfoAuthBdd->chp_structure_nom)) {
-
 
201
    	$chp_structure = $objet_pear_auth->getAuthData($InfoAuthBdd->chp_structure_nom);
-
 
202
    }
-
 
203
    if ($objet_pear_auth->getAuth()) { $loggue = true; } else { $loggue = false; }
-
 
204
    
-
 
205
    /** Compteur sert a compter le nombre de fois qu est appele l applet
-
 
206
     * et ce afin que les tabindex du formulaire soient correct
-
 
207
     */  
-
 
208
    
-
 
209
    static $compteur = 0;
-
 
210
	ob_start();
-
 
211
	include $options['template'];
-
 
212
	$retour = ob_get_contents();
-
 
213
	// Arrete et detruit le buffer
-
 
214
	ob_end_clean();		 
-
 
215
	      
-
 
216
	$compteur++;
-
 
217
	
-
 
218
    return $retour;
-
 
219
}
-
 
220
 
-
 
221
// +------------------------------------------------------------------------------------------------------+
-
 
222
// |                                            PIED du PROGRAMME                                         |
-
 
223
// +------------------------------------------------------------------------------------------------------+
-
 
224
 
-
 
225
 
-
 
226
 
-
 
227
/* +--Fin du code ----------------------------------------------------------------------------------------+
-
 
228
*
-
 
229
* $Log: not supported by cvs2svn $
-
 
230
* Revision 1.37  2008-04-18 14:19:09  jp_milcent
-
 
231
* Fusion avec la livraison AHA : 18 avril 2008
-
 
232
*
-
 
233
* Revision 1.35.2.2  2008-04-18 14:14:55  jp_milcent
-
 
234
* Gestion de plusieurs applettes identifications sur la même page html.
-
 
235
* Correction de bogues.
-
 
236
*
-
 
237
* Revision 1.36  2007-11-27 11:26:55  jp_milcent
-
 
238
* Fusion avec la livraison AHA : 27 novembre 2007
-
 
239
*
-
 
240
* Revision 1.35.2.1  2007-11-27 11:25:30  jp_milcent
-
 
241
* Correction bogue : non affichage de l'url d'erreur de saisie du login.
-
 
242
*
-
 
243
* Revision 1.35  2007-10-11 14:14:22  florian
-
 
244
* amelioration du template de l'applette inscription
-
 
245
*
-
 
246
* Revision 1.34  2007-09-18 08:40:54  alexandre_tb
-
 
247
* modification de la balise identification pour permettre de preciser un template.
-
 
248
*
-
 
249
* Revision 1.33  2007-08-28 14:23:35  jp_milcent
-
 
250
* Amélioration de la gestion des mots de passe perdus.
-
 
251
*
-
 
252
* Revision 1.32  2007-08-28 14:14:35  jp_milcent
-
 
253
* Ajout de la gestion des erreurs d'identification.
-
 
254
*
-
 
255
* Revision 1.31  2006-12-15 14:49:47  jp_milcent
-
 
256
* Correction bogue : le type de cryptage est stocké à 2 endroits...
-
 
257
*
-
 
258
* Revision 1.30  2006/12/14 15:01:05  jp_milcent
-
 
259
* Utilisation d'un système permettant de mémoriser les idenitifications.
-
 
260
* Passage à Auth 1.4.3 et DB 1.7.6.
-
 
261
*
-
 
262
* Revision 1.29  2006/12/12 13:53:54  jp_milcent
-
 
263
* Mise en place du nouveau format des balises d'applette.
-
 
264
*
-
 
265
* Revision 1.28  2006/12/12 13:26:42  jp_milcent
-
 
266
* Modification de la gestion de l'identification. Utilisation des variables de session.
-
 
267
*
-
 
268
* Revision 1.27  2006/12/08 18:14:57  jp_milcent
-
 
269
* Correction bogue : l'identification ne tenait pas...
-
 
270
*
-
 
271
* Revision 1.26  2006/12/01 16:33:40  florian
-
 
272
* Amélioration de la gestion des applettes et compatibilité avec le nouveau mode de gestion de l'inclusion des applettes.
-
 
273
*
-
 
274
* Revision 1.25  2006/11/20 18:40:33  jp_milcent
-
 
275
* Amélioration de la gestion des infos sur l'inscription.
-
 
276
* Ajout du paramêtre url_inscription_aide permettant d'indiquer l'url vers une page d'aide sur l'inscription.
-
 
277
*
-
 
278
* Revision 1.24  2006/11/20 17:42:40  jp_milcent
-
 
279
* Ajout d'un test activant ou pas la mémorisation de l'identification.
-
 
280
*
-
 
281
* Revision 1.23  2006/11/20 17:30:40  jp_milcent
-
 
282
* Amélioration de la gestion de l'identification.
-
 
283
* Utilisation des durées de session correcte.
-
 
284
* Suppression du code pour Spip non fonctionnel.
-
 
285
*
-
 
286
* Revision 1.22  2006/09/21 15:25:17  jp_milcent
-
 
287
* Nettoyage dans l'url de la querystring logout.
-
 
288
*
-
 
289
* Revision 1.21  2006/03/02 10:49:49  ddelon
-
 
290
* Fusion branche multilinguisme dans branche principale
-
 
291
*
-
 
292
* Revision 1.20  2005/12/13 11:13:35  alexandre_tb
-
 
293
* ajout d'un message si l'identification échoue
-
 
294
*
-
 
295
* Revision 1.19.2.1  2005/12/20 14:40:24  ddelon
-
 
296
* Fusion Head vers Livraison
-
 
297
*
-
 
298
* Revision 1.20  2005/12/13 11:13:35  alexandre_tb
-
 
299
* ajout d'un message si l'identification échoue
-
 
300
*
-
 
301
* Revision 1.19  2005/10/31 17:09:28  ddelon
-
 
302
* Suppression auth start suite à deconnexion ... attention aux effets de bord
-
 
303
*
-
 
304
* Revision 1.18  2005/09/27 09:07:32  ddelon
-
 
305
* size applette et squelettes
-
 
306
*
-
 
307
* Revision 1.17  2005/09/12 09:17:17  alexandre_tb
-
 
308
* utilisation de l'objet Net_URL pour ajouter la variable logout dans le lien de déconnexion
-
 
309
*
-
 
310
* Revision 1.16  2005/06/09 17:06:28  jpm
-
 
311
* Ajout de constantes de langue.
-
 
312
*
-
 
313
* Revision 1.15  2005/06/02 11:56:00  jpm
-
 
314
* Modification de l'affichage de l'identification.
-
 
315
*
-
 
316
* Revision 1.14  2005/05/19 14:00:58  jpm
-
 
317
* Déplacement du menu de modif de l'inscription.
-
 
318
*
-
 
319
* Revision 1.13  2005/04/14 16:37:22  jpm
-
 
320
* Ajout de la gestion de la modification de son inscription.
-
 
321
*
-
 
322
* Revision 1.12  2005/03/25 14:40:51  jpm
-
 
323
* Prise en compte du paramêtre url_inscription permettant de faire figurer dans l'applette inscription un lien vers la page d'inscription.
-
 
324
*
-
 
325
* Revision 1.11  2005/03/17 15:52:17  jpm
-
 
326
* Suppression d'un / causant un bogue.
-
 
327
*
-
 
328
* Revision 1.10  2005/03/15 14:47:14  jpm
-
 
329
* Utilisation d'un lien à la place d'un formulaire pour la déconnexion.
-
 
330
*
-
 
331
* Revision 1.9  2005/03/15 14:17:46  jpm
-
 
332
* Ajout d'un fichier de config et de traduction.
-
 
333
* Début gestion des constantes de langue.
-
 
334
*
-
 
335
* Revision 1.8  2005/03/10 12:50:44  alex
-
 
336
* remplacement de & par  &amp;
-
 
337
*
-
 
338
* Revision 1.7  2005/01/07 12:43:03  alex
-
 
339
* réauction de la taille des champs texte à 12
-
 
340
*
-
 
341
* Revision 1.6  2004/12/13 18:07:09  alex
-
 
342
* désauthentification spip presque parfaite
-
 
343
*
-
 
344
* Revision 1.5  2004/09/23 14:31:12  jpm
-
 
345
* Correction bogue sur l'identification de l'annuaire_tela.
-
 
346
*
-
 
347
* Revision 1.4  2004/09/23 10:53:44  jpm
-
 
348
* Suppression de l'attribut size. Gestion via les css.
-
 
349
*
-
 
350
* Revision 1.3  2004/06/28 10:18:48  alex
-
 
351
* suppression de balises <p>
-
 
352
*
-
 
353
* Revision 1.2  2004/06/21 07:37:30  alex
-
 
354
* Modification d'un label
-
 
355
*
-
 
356
* Revision 1.1  2004/06/15 15:01:41  jpm
-
 
357
* Changement de nom et d'arborescence de Genesia en Papyrus.
-
 
358
*
-
 
359
* Revision 1.5  2004/05/05 06:44:15  jpm
-
 
360
* Complément des commentaires indiquant les paquetages nécessaire à l'applette.
-
 
361
*
-
 
362
* Revision 1.4  2004/05/03 11:18:55  jpm
-
 
363
* Intégration de la variable globale de Génésia dans les arguments de la fonction de l'applette.
-
 
364
*
-
 
365
* Revision 1.3  2004/05/01 17:21:16  jpm
-
 
366
* Ajout d'un fieldset et d'une légende au formulaire.
-
 
367
*
-
 
368
* Revision 1.2  2004/05/01 16:13:07  jpm
-
 
369
* Ajout du nom de la balise de l'applette dans le code de l'applette.
-
 
370
*
-
 
371
* Revision 1.1  2004/05/01 11:42:01  jpm
-
 
372
* Ajout de l'applette identification.
-
 
373
*
-
 
374
*
-
 
375
* +-- Fin du code ----------------------------------------------------------------------------------------+
-
 
376
*/
-
 
377
?>
-
 
378
1
<?php
-
 
2
/*vim: set expandtab tabstop=4 shiftwidth=4: */ 
-
 
3
// +------------------------------------------------------------------------------------------------------+
-
 
4
// | PHP version 4.1                                                                                      |
-
 
5
// +------------------------------------------------------------------------------------------------------+
-
 
6
// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org)                                         |
-
 
7
// +------------------------------------------------------------------------------------------------------+
-
 
8
// | This library is free software; you can redistribute it and/or                                        |
-
 
9
// | modify it under the terms of the GNU Lesser General Public                                           |
-
 
10
// | License as published by the Free Software Foundation; either                                         |
-
 
11
// | version 2.1 of the License, or (at your option) any later version.                                   |
-
 
12
// |                                                                                                      |
-
 
13
// | This library is distributed in the hope that it will be useful,                                      |
-
 
14
// | but WITHOUT ANY WARRANTY; without even the implied warranty of                                       |
-
 
15
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU                                    |
-
 
16
// | Lesser General Public License for more details.                                                      |
-
 
17
// |                                                                                                      |
-
 
18
// | You should have received a copy of the GNU Lesser General Public                                     |
-
 
19
// | License along with this library; if not, write to the Free Software                                  |
-
 
20
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
-
 
21
// +------------------------------------------------------------------------------------------------------+
-
 
22
// CVS : $Id: identification.php,v 1.37 2008-04-18 14:19:09 jp_milcent Exp $
-
 
23
/**
-
 
24
* Applette : identification
-
 
25
*
-
 
26
* Génère un formulaire les champs nécessaires pour s'identifier.
-
 
27
* Nécessite :
-
 
28
* - Variable globale de Génésia.
-
 
29
* - Pear Auth
-
 
30
* - Pear Net_URL
-
 
31
*
-
 
32
* A faire : remplacer le formulaire par un QuickForm
-
 
33
*
-
 
34
*@package Applette
-
 
35
*@subpackage Identification
-
 
36
//Auteur original :
-
 
37
*@author        Jean-Pascal MILCENT <jpm@tela-botanica.org>
-
 
38
//Autres auteurs :
-
 
39
*@author        Aucun
-
 
40
*@copyright     Tela-Botanica 2000-2004
-
 
41
*@version       $Revision: 1.37 $ $Date: 2008-04-18 14:19:09 $
-
 
42
// +------------------------------------------------------------------------------------------------------+
-
 
43
*/
-
 
44
 
-
 
45
// +------------------------------------------------------------------------------------------------------+
-
 
46
// |                                            ENTÊTE du PROGRAMME                                       |
-
 
47
// +------------------------------------------------------------------------------------------------------+
-
 
48
$GLOBALS['_GEN_commun']['info_applette_nom_fonction'] = 'afficherFormIdentification';
-
 
49
$GLOBALS['_GEN_commun']['info_applette_balise'] = 	'(?:<!-- '.$GLOBALS['_GEN_commun']['balise_prefixe'].'(IDENTIFICATION) -->|'.
-
 
50
													'\{\{[Ii]dentification'.
-
 
51
													'(?:\s*'.
-
 
52
														'(?:'.
-
 
53
															'(template=".*")|'.
-
 
54
														')'.
-
 
55
													')+'.
-
 
56
													'\s*\}\})';
-
 
57
 
-
 
58
/** Inclusion du fichier de configuration de cette applette.*/
-
 
59
require_once GEN_CHEMIN_APPLETTE.'identification'.GEN_SEP.'configuration'.GEN_SEP.'iden_config.inc.php';
-
 
60
 
-
 
61
// Inclusion des fichiers de traduction de l'applette.
-
 
62
if (file_exists(IDEN_CHEMIN_LANGUE.'iden_langue_'.$GLOBALS['_GEN_commun']['i18n'].'.inc.php')) {
-
 
63
    /** Inclusion du fichier de traduction suite à la transaction avec le navigateur.*/
-
 
64
    require_once IDEN_CHEMIN_LANGUE.'iden_langue_'.$GLOBALS['_GEN_commun']['i18n'].'.inc.php';
-
 
65
} else {
-
 
66
    /** Inclusion du fichier de traduction par défaut.*/
-
 
67
    require_once IDEN_CHEMIN_LANGUE.'iden_langue_'.IDEN_I18N_DEFAUT.'.inc.php';
-
 
68
}
-
 
69
// +------------------------------------------------------------------------------------------------------+
-
 
70
// |                                            CORPS du PROGRAMME                                        |
-
 
71
// +------------------------------------------------------------------------------------------------------+
-
 
72
 
-
 
73
// Si le site utilise une authentification.
-
 
74
if ($GLOBALS['_GEN_commun']['info_auth']->gsa_ce_type_auth == 1) {
-
 
75
	$cookie_persistant_nom = session_name().'-memo';
-
 
76
    // Si un formulaire nous renvoie en POST une variable "deconnexion", nous délogons l'utilisateur.
-
 
77
    if ((isset($_REQUEST['deconnexion']) || isset($_REQUEST['logout']))) {
-
 
78
		$GLOBALS['_GEN_commun']['pear_auth']->logout();
-
 
79
		// Destruction du cookie de session de Papyrus : est ce utile?
-
 
80
		setcookie(session_name(), session_id(), time()-3600, '/');
-
 
81
		// Destruction du cookie de permanence de l'identitification de Papyrus
-
 
82
		setcookie($cookie_persistant_nom, '', time()-3600, '/');
-
 
83
		setcookie('pap-annuaire_tela-utilisateur', '', time()-3600, '/');
-
 
84
		//$GLOBALS['_GEN_commun']['pear_auth']->start();
-
 
85
    } else {
-
 
86
    	if (isset($_REQUEST['connexion'])) {
-
 
87
	    	// Si un formulaire nous renvoie en POST une variable "connexion", nous logons l'utilisateur.
-
 
88
			// Nous vérifions que l'utilisateur est coché "Mémoriser mon compte"
-
 
89
			if (isset($_POST['persistant']) && $_POST['persistant'] == 'o' && IDEN_AUTH_SESSION_DUREE != 0) {
-
 
90
		        // Expiration si l'utilisateur ne referme pas son navigateur
-
 
91
				$GLOBALS['_GEN_commun']['pear_auth']->setExpire((int)IDEN_AUTH_SESSION_DUREE);
-
 
92
				// Création d'un cookie pour rendre permanente l'identification de Papyrus
-
 
93
				$cookie_val = md5($_POST['password']).$_POST['username'];
-
 
94
				setcookie($cookie_persistant_nom, $cookie_val, (int)IDEN_AUTH_SESSION_DUREE, '/');
-
 
95
				setcookie('pap-annuaire_tela-utilisateur', $_POST['username'],  (int)IDEN_AUTH_SESSION_DUREE, '/');
-
 
96
			}
-
 
97
			else {
-
 
98
				setcookie('pap-annuaire_tela-utilisateur', $_POST['username'], 0, '/');
-
 
99
			}
-
 
100
			
-
 
101
	    } else if (isset($_COOKIE[$cookie_persistant_nom])) {
-
 
102
			// Si un cookie existe, nous loggons l'utilisateur.
-
 
103
			$GLOBALS['_GEN_commun']['pear_auth']->password = substr($_COOKIE[$cookie_persistant_nom], 0, 32 );
-
 
104
			$GLOBALS['_GEN_commun']['pear_auth']->username = substr($_COOKIE[$cookie_persistant_nom], 32);
-
 
105
			// Nous sommes obligés de crypter le mot de passe
-
 
106
			if (isset($GLOBALS['_GEN_commun']['pear_auth']->storage_options)) {
-
 
107
				$GLOBALS['_GEN_commun']['pear_auth']->storage_options['cryptType'] = 'none';
-
 
108
    		}
-
 
109
    		if (isset($GLOBALS['_GEN_commun']['pear_auth']->storage->options)) {
-
 
110
				$GLOBALS['_GEN_commun']['pear_auth']->storage->options['cryptType'] = 'none';
-
 
111
			}
-
 
112
			
-
 
113
		}
-
 
114
		$GLOBALS['_GEN_commun']['pear_auth']->login();
-
 
115
		//echo '<pre>'.print_r($GLOBALS['_GEN_commun']['pear_auth'], true).'</pre>';
-
 
116
    }
-
 
117
}
-
 
118
 
-
 
119
// +------------------------------------------------------------------------------------------------------+
-
 
120
// |                                           LISTE de FONCTIONS                                         |
-
 
121
// +------------------------------------------------------------------------------------------------------+
-
 
122
 
-
 
123
/** Fonction afficherFormIdentification() - Retourne une formulaire pour s'identifier.
-
 
124
*
-
 
125
* Retourne un formulaire d'identificatin ou de déconnexion suivant que l'utilisateur est
-
 
126
* identifié ou pas.
-
 
127
*
-
 
128
* @param  array  tableau d'éventuel arguments présent dans la balise transmis à la fonction. 
-
 
129
* @param  array  tableau global de Papyrus.
-
 
130
* @return string formulaire de connexion ou de déconnexion.
-
 
131
*/
-
 
132
function afficherFormIdentification($tab_arguments, $_GEN_commun)
-
 
133
{
-
 
134
    // Extraction des arguments s il y a
-
 
135
    $balise = $tab_arguments[0];
-
 
136
    $tab_arguments = $tab_arguments;
-
 
137
	unset($tab_arguments[0]);
-
 
138
    foreach($tab_arguments as $argument) {
-
 
139
    	if ($argument != '') {
-
 
140
	    	$tab_parametres = explode('=', $argument, 2);
-
 
141
	    	if (isset($tab_parametres[1])) $options[$tab_parametres[0]] = trim($tab_parametres[1], '"');
-
 
142
    	}
-
 
143
    }
-
 
144
    if (!isset($options['template'])) {
-
 
145
    	$options['template'] = IDEN_CHEMIN_APPLETTE.'squelettes/'.IDEN_SQUELETTE_DEFAUT;
-
 
146
    }
-
 
147
    // Initialisation de variable.
-
 
148
    $retour = '';
-
 
149
    // Gestion des attributs "id" des balises XHTML uniques
-
 
150
    $id_xhtml = '';
-
 
151
    if ( $GLOBALS['_PAPYRUS_']['applette']['comptage']['afficherFormIdentification'] > 1) {
-
 
152
    	$id_xhtml =  $GLOBALS['_PAPYRUS_']['applette']['comptage']['afficherFormIdentification'];
-
 
153
    }
-
 
154
    $objet_pear_auth =& $_GEN_commun['pear_auth'];
-
 
155
    $objet_pear_db =& $_GEN_commun['pear_db'];
-
 
156
    $InfoAuthBdd =& $_GEN_commun['info_auth_bdd'];
-
 
157
    $objet_url =& $_GEN_commun['url'];
-
 
158
    $url = $objet_url->getURL();
-
 
159
    $objet_url->addQueryString('logout', 1);
-
 
160
    $url_deconnect = $objet_url->getURL();
-
 
161
    $objet_url->removeQueryString('logout');
-
 
162
    // Récupération des valeurs pour le login et le mot de passe
-
 
163
    $mot_de_passe = (! isset($_POST['password']))    ? '' : $_POST['password'];
-
 
164
    $login        = (! isset($_POST['username']))    ? '' : $_POST['username'];
-
 
165
    
-
 
166
    $url_inscription_aide = $InfoAuthBdd->url_erreur;
-
 
167
    
-
 
168
    // ATTENTION : Partie à supprimer une fois les mise à jour effectué dans l'annuaire de Tela Botanica
-
 
169
    // Devrait être déplacer dans l'appli inscription de Tela.
-
 
170
    if (isset($InfoAuthBdd->gsab_nom_table) && $InfoAuthBdd->gsab_nom_table == 'annuaire_tela') {
-
 
171
        verification_mot_de_passe($objet_pear_db, $mot_de_passe, $login);
-
 
172
        if (isset($_POST['connexion'])) {
-
 
173
            $objet_pear_auth->login();
-
 
174
        }
-
 
175
    }
-
 
176
        
-
 
177
	// L'utilisateur a essayé de s'identifier mais a échoué
-
 
178
	$url_erreur = false;
-
 
179
	if ($login != '') {
-
 
180
		$url_erreur = '#';
-
 
181
		if (isset($InfoAuthBdd->url_erreur)) {
-
 
182
			$url_erreur = $InfoAuthBdd->url_erreur;
-
 
183
		} else if (isset($InfoAuthBdd->url_inscription)) {
-
 
184
			$url_erreur = $InfoAuthBdd->url_inscription;
-
 
185
		}
-
 
186
	}
-
 
187
	$url_inscription_aide = '';
-
 
188
	$url_page_inscription = '';
-
 
189
	$url_page_modif_inscription = '';
-
 
190
	if (isset($InfoAuthBdd->url_inscription)) {
-
 
191
    	$url_page_inscription = $InfoAuthBdd->url_inscription;
-
 
192
	}
-
 
193
	if (isset($InfoAuthBdd->url_inscription_modif)) {
-
 
194
    	$url_page_modif_inscription = $InfoAuthBdd->url_inscription_modif;
-
 
195
	}
-
 
196
	if (isset($InfoAuthBdd->url_inscription_aide)) {
-
 
197
		$url_inscription_aide = $InfoAuthBdd->url_inscription_aide;
-
 
198
	}
-
 
199
	$chp_personne_prenom='';
-
 
200
    if (isset($InfoAuthBdd->chp_personne_prenom)) {
-
 
201
        $chp_personne_prenom = $objet_pear_auth->getAuthData($InfoAuthBdd->chp_personne_prenom);
-
 
202
    }
-
 
203
    $chp_personne_nom='';
-
 
204
    if (isset($InfoAuthBdd->chp_personne_nom)) {
-
 
205
    	$chp_personne_nom = $objet_pear_auth->getAuthData($InfoAuthBdd->chp_personne_nom);
-
 
206
    }                
-
 
207
    $chp_structure='';           
-
 
208
    if (isset($InfoAuthBdd->chp_structure_nom)) {
-
 
209
    	$chp_structure = $objet_pear_auth->getAuthData($InfoAuthBdd->chp_structure_nom);
-
 
210
    }
-
 
211
    if ($objet_pear_auth->getAuth()) { $loggue = true; } else { $loggue = false; }
-
 
212
    
-
 
213
    /** Compteur sert a compter le nombre de fois qu est appele l applet
-
 
214
     * et ce afin que les tabindex du formulaire soient correct
-
 
215
     */  
-
 
216
    
-
 
217
    static $compteur = 0;
-
 
218
	ob_start();
-
 
219
	include $options['template'];
-
 
220
	$retour = ob_get_contents();
-
 
221
	// Arrete et detruit le buffer
-
 
222
	ob_end_clean();		 
-
 
223
	      
-
 
224
	$compteur++;
-
 
225
	
-
 
226
    return $retour;
-
 
227
}
-
 
228
 
-
 
229
// +------------------------------------------------------------------------------------------------------+
-
 
230
// |                                            PIED du PROGRAMME                                         |
-
 
231
// +------------------------------------------------------------------------------------------------------+
-
 
232
 
-
 
233
 
-
 
234
 
-
 
235
/* +--Fin du code ----------------------------------------------------------------------------------------+
-
 
236
*
-
 
237
* $Log: identification.php,v $
-
 
238
* Revision 1.37  2008-04-18 14:19:09  jp_milcent
-
 
239
* Fusion avec la livraison AHA : 18 avril 2008
-
 
240
*
-
 
241
* Revision 1.35.2.2  2008-04-18 14:14:55  jp_milcent
-
 
242
* Gestion de plusieurs applettes identifications sur la même page html.
-
 
243
* Correction de bogues.
-
 
244
*
-
 
245
* Revision 1.36  2007-11-27 11:26:55  jp_milcent
-
 
246
* Fusion avec la livraison AHA : 27 novembre 2007
-
 
247
*
-
 
248
* Revision 1.35.2.1  2007-11-27 11:25:30  jp_milcent
-
 
249
* Correction bogue : non affichage de l'url d'erreur de saisie du login.
-
 
250
*
-
 
251
* Revision 1.35  2007-10-11 14:14:22  florian
-
 
252
* amelioration du template de l'applette inscription
-
 
253
*
-
 
254
* Revision 1.34  2007-09-18 08:40:54  alexandre_tb
-
 
255
* modification de la balise identification pour permettre de preciser un template.
-
 
256
*
-
 
257
* Revision 1.33  2007-08-28 14:23:35  jp_milcent
-
 
258
* Amélioration de la gestion des mots de passe perdus.
-
 
259
*
-
 
260
* Revision 1.32  2007-08-28 14:14:35  jp_milcent
-
 
261
* Ajout de la gestion des erreurs d'identification.
-
 
262
*
-
 
263
* Revision 1.31  2006-12-15 14:49:47  jp_milcent
-
 
264
* Correction bogue : le type de cryptage est stocké à 2 endroits...
-
 
265
*
-
 
266
* Revision 1.30  2006/12/14 15:01:05  jp_milcent
-
 
267
* Utilisation d'un système permettant de mémoriser les idenitifications.
-
 
268
* Passage à Auth 1.4.3 et DB 1.7.6.
-
 
269
*
-
 
270
* Revision 1.29  2006/12/12 13:53:54  jp_milcent
-
 
271
* Mise en place du nouveau format des balises d'applette.
-
 
272
*
-
 
273
* Revision 1.28  2006/12/12 13:26:42  jp_milcent
-
 
274
* Modification de la gestion de l'identification. Utilisation des variables de session.
-
 
275
*
-
 
276
* Revision 1.27  2006/12/08 18:14:57  jp_milcent
-
 
277
* Correction bogue : l'identification ne tenait pas...
-
 
278
*
-
 
279
* Revision 1.26  2006/12/01 16:33:40  florian
-
 
280
* Amélioration de la gestion des applettes et compatibilité avec le nouveau mode de gestion de l'inclusion des applettes.
-
 
281
*
-
 
282
* Revision 1.25  2006/11/20 18:40:33  jp_milcent
-
 
283
* Amélioration de la gestion des infos sur l'inscription.
-
 
284
* Ajout du paramêtre url_inscription_aide permettant d'indiquer l'url vers une page d'aide sur l'inscription.
-
 
285
*
-
 
286
* Revision 1.24  2006/11/20 17:42:40  jp_milcent
-
 
287
* Ajout d'un test activant ou pas la mémorisation de l'identification.
-
 
288
*
-
 
289
* Revision 1.23  2006/11/20 17:30:40  jp_milcent
-
 
290
* Amélioration de la gestion de l'identification.
-
 
291
* Utilisation des durées de session correcte.
-
 
292
* Suppression du code pour Spip non fonctionnel.
-
 
293
*
-
 
294
* Revision 1.22  2006/09/21 15:25:17  jp_milcent
-
 
295
* Nettoyage dans l'url de la querystring logout.
-
 
296
*
-
 
297
* Revision 1.21  2006/03/02 10:49:49  ddelon
-
 
298
* Fusion branche multilinguisme dans branche principale
-
 
299
*
-
 
300
* Revision 1.20  2005/12/13 11:13:35  alexandre_tb
-
 
301
* ajout d'un message si l'identification échoue
-
 
302
*
-
 
303
* Revision 1.19.2.1  2005/12/20 14:40:24  ddelon
-
 
304
* Fusion Head vers Livraison
-
 
305
*
-
 
306
* Revision 1.20  2005/12/13 11:13:35  alexandre_tb
-
 
307
* ajout d'un message si l'identification échoue
-
 
308
*
-
 
309
* Revision 1.19  2005/10/31 17:09:28  ddelon
-
 
310
* Suppression auth start suite à deconnexion ... attention aux effets de bord
-
 
311
*
-
 
312
* Revision 1.18  2005/09/27 09:07:32  ddelon
-
 
313
* size applette et squelettes
-
 
314
*
-
 
315
* Revision 1.17  2005/09/12 09:17:17  alexandre_tb
-
 
316
* utilisation de l'objet Net_URL pour ajouter la variable logout dans le lien de déconnexion
-
 
317
*
-
 
318
* Revision 1.16  2005/06/09 17:06:28  jpm
-
 
319
* Ajout de constantes de langue.
-
 
320
*
-
 
321
* Revision 1.15  2005/06/02 11:56:00  jpm
-
 
322
* Modification de l'affichage de l'identification.
-
 
323
*
-
 
324
* Revision 1.14  2005/05/19 14:00:58  jpm
-
 
325
* Déplacement du menu de modif de l'inscription.
-
 
326
*
-
 
327
* Revision 1.13  2005/04/14 16:37:22  jpm
-
 
328
* Ajout de la gestion de la modification de son inscription.
-
 
329
*
-
 
330
* Revision 1.12  2005/03/25 14:40:51  jpm
-
 
331
* Prise en compte du paramêtre url_inscription permettant de faire figurer dans l'applette inscription un lien vers la page d'inscription.
-
 
332
*
-
 
333
* Revision 1.11  2005/03/17 15:52:17  jpm
-
 
334
* Suppression d'un / causant un bogue.
-
 
335
*
-
 
336
* Revision 1.10  2005/03/15 14:47:14  jpm
-
 
337
* Utilisation d'un lien à la place d'un formulaire pour la déconnexion.
-
 
338
*
-
 
339
* Revision 1.9  2005/03/15 14:17:46  jpm
-
 
340
* Ajout d'un fichier de config et de traduction.
-
 
341
* Début gestion des constantes de langue.
-
 
342
*
-
 
343
* Revision 1.8  2005/03/10 12:50:44  alex
-
 
344
* remplacement de & par  &amp;
-
 
345
*
-
 
346
* Revision 1.7  2005/01/07 12:43:03  alex
-
 
347
* réauction de la taille des champs texte à 12
-
 
348
*
-
 
349
* Revision 1.6  2004/12/13 18:07:09  alex
-
 
350
* désauthentification spip presque parfaite
-
 
351
*
-
 
352
* Revision 1.5  2004/09/23 14:31:12  jpm
-
 
353
* Correction bogue sur l'identification de l'annuaire_tela.
-
 
354
*
-
 
355
* Revision 1.4  2004/09/23 10:53:44  jpm
-
 
356
* Suppression de l'attribut size. Gestion via les css.
-
 
357
*
-
 
358
* Revision 1.3  2004/06/28 10:18:48  alex
-
 
359
* suppression de balises <p>
-
 
360
*
-
 
361
* Revision 1.2  2004/06/21 07:37:30  alex
-
 
362
* Modification d'un label
-
 
363
*
-
 
364
* Revision 1.1  2004/06/15 15:01:41  jpm
-
 
365
* Changement de nom et d'arborescence de Genesia en Papyrus.
-
 
366
*
-
 
367
* Revision 1.5  2004/05/05 06:44:15  jpm
-
 
368
* Complément des commentaires indiquant les paquetages nécessaire à l'applette.
-
 
369
*
-
 
370
* Revision 1.4  2004/05/03 11:18:55  jpm
-
 
371
* Intégration de la variable globale de Génésia dans les arguments de la fonction de l'applette.
-
 
372
*
-
 
373
* Revision 1.3  2004/05/01 17:21:16  jpm
-
 
374
* Ajout d'un fieldset et d'une légende au formulaire.
-
 
375
*
-
 
376
* Revision 1.2  2004/05/01 16:13:07  jpm
-
 
377
* Ajout du nom de la balise de l'applette dans le code de l'applette.
-
 
378
*
-
 
379
* Revision 1.1  2004/05/01 11:42:01  jpm
-
 
380
* Ajout de l'applette identification.
-
 
381
*
-
 
382
*
-
 
383
* +-- Fin du code ----------------------------------------------------------------------------------------+
-
 
384
*/
-
 
385
?>
-
 
386