Subversion Repositories Applications.papyrus

Rev

Rev 1649 | Rev 1830 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1090 florian 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
// +------------------------------------------------------------------------------------------------------+
1728 jp_milcent 22
// CVS : $Id: identification.php,v 1.36 2007-11-27 11:26:55 jp_milcent Exp $
1090 florian 23
/**
24
* Applette : identification
17 alex 25
*
1090 florian 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
*
17 alex 32
* A faire : remplacer le formulaire par un QuickForm
1090 florian 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
1728 jp_milcent 41
*@version       $Revision: 1.36 $ $Date: 2007-11-27 11:26:55 $
1090 florian 42
// +------------------------------------------------------------------------------------------------------+
43
*/
304 jpm 44
 
1090 florian 45
// +------------------------------------------------------------------------------------------------------+
46
// |                                            ENTÊTE du PROGRAMME                                       |
47
// +------------------------------------------------------------------------------------------------------+
48
$GLOBALS['_GEN_commun']['info_applette_nom_fonction'] = 'afficherFormIdentification';
1145 jp_milcent 49
$GLOBALS['_GEN_commun']['info_applette_balise'] = 	'(?:<!-- '.$GLOBALS['_GEN_commun']['balise_prefixe'].'(IDENTIFICATION) -->|'.
1606 alexandre_ 50
													'\{\{[Ii]dentification'.
51
													'(?:\s*'.
52
														'(?:'.
53
															'(template=".*")|'.
54
														')'.
55
													')+'.
56
													'\s*\}\})';
1090 florian 57
 
304 jpm 58
/** Inclusion du fichier de configuration de cette applette.*/
1090 florian 59
require_once GEN_CHEMIN_APPLETTE.'identification'.GEN_SEP.'configuration'.GEN_SEP.'iden_config.inc.php';
304 jpm 60
 
61
// Inclusion des fichiers de traduction de l'applette.
1090 florian 62
if (file_exists(IDEN_CHEMIN_LANGUE.'iden_langue_'.$GLOBALS['_GEN_commun']['i18n'].'.inc.php')) {
304 jpm 63
    /** Inclusion du fichier de traduction suite à la transaction avec le navigateur.*/
1090 florian 64
    require_once IDEN_CHEMIN_LANGUE.'iden_langue_'.$GLOBALS['_GEN_commun']['i18n'].'.inc.php';
304 jpm 65
} else {
66
    /** Inclusion du fichier de traduction par défaut.*/
67
    require_once IDEN_CHEMIN_LANGUE.'iden_langue_'.IDEN_I18N_DEFAUT.'.inc.php';
1090 florian 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) {
1172 jp_milcent 75
	$cookie_persistant_nom = session_name().'-memo';
1090 florian 76
    // Si un formulaire nous renvoie en POST une variable "deconnexion", nous délogons l'utilisateur.
1172 jp_milcent 77
    if ((isset($_REQUEST['deconnexion']) || isset($_REQUEST['logout']))) {
1090 florian 78
		$GLOBALS['_GEN_commun']['pear_auth']->logout();
1172 jp_milcent 79
		// Destruction du cookie de session de Papyrus : est ce utile?
1090 florian 80
		setcookie(session_name(), session_id(), time()-3600, '/');
1172 jp_milcent 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
1176 jp_milcent 100
			if (isset($GLOBALS['_GEN_commun']['pear_auth']->storage_options)) {
1172 jp_milcent 101
				$GLOBALS['_GEN_commun']['pear_auth']->storage_options['cryptType'] = 'none';
1176 jp_milcent 102
    		}
103
    		if (isset($GLOBALS['_GEN_commun']['pear_auth']->storage->options)) {
1172 jp_milcent 104
				$GLOBALS['_GEN_commun']['pear_auth']->storage->options['cryptType'] = 'none';
105
			}
1176 jp_milcent 106
 
1090 florian 107
		}
1172 jp_milcent 108
		$GLOBALS['_GEN_commun']['pear_auth']->login();
1176 jp_milcent 109
		//echo '<pre>'.print_r($GLOBALS['_GEN_commun']['pear_auth'], true).'</pre>';
1172 jp_milcent 110
    }
1090 florian 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
{
1606 alexandre_ 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
    }
315 jpm 141
    // Initialisation de variable.
1090 florian 142
    $retour = '';
143
    $objet_pear_auth =& $_GEN_commun['pear_auth'];
144
    $objet_pear_db =& $_GEN_commun['pear_db'];
145
    $InfoAuthBdd =& $_GEN_commun['info_auth_bdd'];
146
    $objet_url =& $_GEN_commun['url'];
147
    $url = $objet_url->getURL();
1649 florian 148
    $objet_url->addQueryString('logout', 1);
149
    $url_deconnect = $objet_url->getURL();
150
    $objet_url->removeQueryString('logout');
1090 florian 151
    // Récupération des valeurs pour le login et le mot de passe
152
    $mot_de_passe = (! isset($_POST['password']))    ? '' : $_POST['password'];
153
    $login        = (! isset($_POST['username']))    ? '' : $_POST['username'];
154
 
155
    // ATTENTION : Partie à supprimer une fois les mise à jour effectué dans l'annuaire de Tela Botanica
156
    // Devrait être déplacer dans l'appli inscription de Tela.
157
    if (isset($InfoAuthBdd->gsab_nom_table) && $InfoAuthBdd->gsab_nom_table == 'annuaire_tela') {
51 jpm 158
        verification_mot_de_passe($objet_pear_db, $mot_de_passe, $login);
159
        if (isset($_POST['connexion'])) {
304 jpm 160
            $objet_pear_auth->login();
1090 florian 161
        }
162
    }
1606 alexandre_ 163
 
1649 florian 164
	// L'utilisateur a essayé de s'identifier mais a échoué
1728 jp_milcent 165
	$url_erreur = false;
1649 florian 166
	if ($login != '') {
167
		$url_erreur = '#';
168
		if (isset($InfoAuthBdd->url_erreur)) {
169
			$url_erreur = $InfoAuthBdd->url_erreur;
170
		} else if (isset($InfoAuthBdd->url_inscription)) {
171
			$url_erreur = $InfoAuthBdd->url_inscription;
172
		}
173
	}
174
	$url_inscription_aide = '';
175
	$url_page_inscription = '';
176
	$url_page_modif_inscription = '';
177
	if (isset($InfoAuthBdd->url_inscription)) {
178
    	$url_page_inscription = $InfoAuthBdd->url_inscription;
179
	}
180
	if (isset($InfoAuthBdd->url_inscription_modif)) {
181
    	$url_page_modif_inscription = $InfoAuthBdd->url_inscription_modif;
182
	}
183
	if (isset($InfoAuthBdd->url_inscription_aide)) {
184
		$url_inscription_aide = $InfoAuthBdd->url_inscription_aide;
185
	}
186
	$chp_personne_prenom='';
187
    if (isset($InfoAuthBdd->chp_personne_prenom)) {
188
        $chp_personne_prenom = $objet_pear_auth->getAuthData($InfoAuthBdd->chp_personne_prenom);
1090 florian 189
    }
1649 florian 190
    $chp_personne_nom='';
191
    if (isset($InfoAuthBdd->chp_personne_nom)) {
192
    	$chp_personne_nom = $objet_pear_auth->getAuthData($InfoAuthBdd->chp_personne_nom);
193
    }
194
    $chp_structure='';
195
    if (isset($InfoAuthBdd->chp_structure_nom)) {
196
    	$chp_structure = $objet_pear_auth->getAuthData($InfoAuthBdd->chp_structure_nom);
197
    }
198
    if ($objet_pear_auth->getAuth()) { $loggue = true; } else { $loggue = false; }
199
 
200
	ob_start();
201
	include_once $options['template'];
202
	$retour = ob_get_contents();
203
	// Arrete et detruit le buffer
204
	ob_end_clean();
205
 
1090 florian 206
    return $retour;
207
}
208
 
209
// +------------------------------------------------------------------------------------------------------+
210
// |                                            PIED du PROGRAMME                                         |
211
// +------------------------------------------------------------------------------------------------------+
212
 
213
 
214
 
215
/* +--Fin du code ----------------------------------------------------------------------------------------+
216
*
4 jpm 217
* $Log: not supported by cvs2svn $
1728 jp_milcent 218
* Revision 1.35.2.1  2007-11-27 11:25:30  jp_milcent
219
* Correction bogue : non affichage de l'url d'erreur de saisie du login.
220
*
221
* Revision 1.35  2007-10-11 14:14:22  florian
222
* amelioration du template de l'applette inscription
223
*
1649 florian 224
* Revision 1.34  2007-09-18 08:40:54  alexandre_tb
225
* modification de la balise identification pour permettre de preciser un template.
226
*
1606 alexandre_ 227
* Revision 1.33  2007-08-28 14:23:35  jp_milcent
228
* Amélioration de la gestion des mots de passe perdus.
229
*
1562 jp_milcent 230
* Revision 1.32  2007-08-28 14:14:35  jp_milcent
231
* Ajout de la gestion des erreurs d'identification.
232
*
1561 jp_milcent 233
* Revision 1.31  2006-12-15 14:49:47  jp_milcent
234
* Correction bogue : le type de cryptage est stocké à 2 endroits...
235
*
1176 jp_milcent 236
* Revision 1.30  2006/12/14 15:01:05  jp_milcent
237
* Utilisation d'un système permettant de mémoriser les idenitifications.
238
* Passage à Auth 1.4.3 et DB 1.7.6.
239
*
1172 jp_milcent 240
* Revision 1.29  2006/12/12 13:53:54  jp_milcent
241
* Mise en place du nouveau format des balises d'applette.
242
*
1145 jp_milcent 243
* Revision 1.28  2006/12/12 13:26:42  jp_milcent
244
* Modification de la gestion de l'identification. Utilisation des variables de session.
245
*
1140 jp_milcent 246
* Revision 1.27  2006/12/08 18:14:57  jp_milcent
247
* Correction bogue : l'identification ne tenait pas...
248
*
1123 jp_milcent 249
* Revision 1.26  2006/12/01 16:33:40  florian
250
* Amélioration de la gestion des applettes et compatibilité avec le nouveau mode de gestion de l'inclusion des applettes.
251
*
1090 florian 252
* Revision 1.25  2006/11/20 18:40:33  jp_milcent
253
* Amélioration de la gestion des infos sur l'inscription.
254
* Ajout du paramêtre url_inscription_aide permettant d'indiquer l'url vers une page d'aide sur l'inscription.
255
*
1059 jp_milcent 256
* Revision 1.24  2006/11/20 17:42:40  jp_milcent
257
* Ajout d'un test activant ou pas la mémorisation de l'identification.
258
*
1056 jp_milcent 259
* Revision 1.23  2006/11/20 17:30:40  jp_milcent
260
* Amélioration de la gestion de l'identification.
261
* Utilisation des durées de session correcte.
262
* Suppression du code pour Spip non fonctionnel.
263
*
1055 jp_milcent 264
* Revision 1.22  2006/09/21 15:25:17  jp_milcent
265
* Nettoyage dans l'url de la querystring logout.
266
*
959 jp_milcent 267
* Revision 1.21  2006/03/02 10:49:49  ddelon
268
* Fusion branche multilinguisme dans branche principale
269
*
754 ddelon 270
* Revision 1.20  2005/12/13 11:13:35  alexandre_tb
271
* ajout d'un message si l'identification échoue
272
*
273
* Revision 1.19.2.1  2005/12/20 14:40:24  ddelon
274
* Fusion Head vers Livraison
275
*
276
* Revision 1.20  2005/12/13 11:13:35  alexandre_tb
277
* ajout d'un message si l'identification échoue
278
*
666 alexandre_ 279
* Revision 1.19  2005/10/31 17:09:28  ddelon
280
* Suppression auth start suite à deconnexion ... attention aux effets de bord
281
*
578 ddelon 282
* Revision 1.18  2005/09/27 09:07:32  ddelon
283
* size applette et squelettes
284
*
467 ddelon 285
* Revision 1.17  2005/09/12 09:17:17  alexandre_tb
286
* utilisation de l'objet Net_URL pour ajouter la variable logout dans le lien de déconnexion
287
*
441 alexandre_ 288
* Revision 1.16  2005/06/09 17:06:28  jpm
289
* Ajout de constantes de langue.
290
*
399 jpm 291
* Revision 1.15  2005/06/02 11:56:00  jpm
292
* Modification de l'affichage de l'identification.
293
*
388 jpm 294
* Revision 1.14  2005/05/19 14:00:58  jpm
295
* Déplacement du menu de modif de l'inscription.
296
*
369 jpm 297
* Revision 1.13  2005/04/14 16:37:22  jpm
298
* Ajout de la gestion de la modification de son inscription.
299
*
337 jpm 300
* Revision 1.12  2005/03/25 14:40:51  jpm
301
* Prise en compte du paramêtre url_inscription permettant de faire figurer dans l'applette inscription un lien vers la page d'inscription.
302
*
315 jpm 303
* Revision 1.11  2005/03/17 15:52:17  jpm
304
* Suppression d'un / causant un bogue.
305
*
309 jpm 306
* Revision 1.10  2005/03/15 14:47:14  jpm
307
* Utilisation d'un lien à la place d'un formulaire pour la déconnexion.
308
*
308 jpm 309
* Revision 1.9  2005/03/15 14:17:46  jpm
310
* Ajout d'un fichier de config et de traduction.
311
* Début gestion des constantes de langue.
312
*
304 jpm 313
* Revision 1.8  2005/03/10 12:50:44  alex
314
* remplacement de & par  &amp;
315
*
303 alex 316
* Revision 1.7  2005/01/07 12:43:03  alex
317
* réauction de la taille des champs texte à 12
318
*
246 alex 319
* Revision 1.6  2004/12/13 18:07:09  alex
320
* désauthentification spip presque parfaite
321
*
228 alex 322
* Revision 1.5  2004/09/23 14:31:12  jpm
323
* Correction bogue sur l'identification de l'annuaire_tela.
324
*
51 jpm 325
* Revision 1.4  2004/09/23 10:53:44  jpm
326
* Suppression de l'attribut size. Gestion via les css.
327
*
49 jpm 328
* Revision 1.3  2004/06/28 10:18:48  alex
329
* suppression de balises <p>
330
*
20 alex 331
* Revision 1.2  2004/06/21 07:37:30  alex
332
* Modification d'un label
333
*
17 alex 334
* Revision 1.1  2004/06/15 15:01:41  jpm
335
* Changement de nom et d'arborescence de Genesia en Papyrus.
336
*
4 jpm 337
* Revision 1.5  2004/05/05 06:44:15  jpm
338
* Complément des commentaires indiquant les paquetages nécessaire à l'applette.
1090 florian 339
*
340
* Revision 1.4  2004/05/03 11:18:55  jpm
341
* Intégration de la variable globale de Génésia dans les arguments de la fonction de l'applette.
342
*
343
* Revision 1.3  2004/05/01 17:21:16  jpm
344
* Ajout d'un fieldset et d'une légende au formulaire.
345
*
346
* Revision 1.2  2004/05/01 16:13:07  jpm
347
* Ajout du nom de la balise de l'applette dans le code de l'applette.
348
*
349
* Revision 1.1  2004/05/01 11:42:01  jpm
350
* Ajout de l'applette identification.
351
*
352
*
353
* +-- Fin du code ----------------------------------------------------------------------------------------+
354
*/
4 jpm 355
?>