Subversion Repositories Applications.papyrus

Rev

Rev 1176 | 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
// +------------------------------------------------------------------------------------------------------+
1176 jp_milcent 22
// CVS : $Id: identification.php,v 1.31 2006-12-15 14:49:47 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
1176 jp_milcent 41
*@version       $Revision: 1.31 $ $Date: 2006-12-15 14:49:47 $
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) -->|'.
50
													'\{\{[Ii]dentification\s*\}\})';
1090 florian 51
 
304 jpm 52
/** Inclusion du fichier de configuration de cette applette.*/
1090 florian 53
require_once GEN_CHEMIN_APPLETTE.'identification'.GEN_SEP.'configuration'.GEN_SEP.'iden_config.inc.php';
304 jpm 54
 
55
// Inclusion des fichiers de traduction de l'applette.
1090 florian 56
if (file_exists(IDEN_CHEMIN_LANGUE.'iden_langue_'.$GLOBALS['_GEN_commun']['i18n'].'.inc.php')) {
304 jpm 57
    /** Inclusion du fichier de traduction suite à la transaction avec le navigateur.*/
1090 florian 58
    require_once IDEN_CHEMIN_LANGUE.'iden_langue_'.$GLOBALS['_GEN_commun']['i18n'].'.inc.php';
304 jpm 59
} else {
60
    /** Inclusion du fichier de traduction par défaut.*/
61
    require_once IDEN_CHEMIN_LANGUE.'iden_langue_'.IDEN_I18N_DEFAUT.'.inc.php';
1090 florian 62
}
63
// +------------------------------------------------------------------------------------------------------+
64
// |                                            CORPS du PROGRAMME                                        |
65
// +------------------------------------------------------------------------------------------------------+
66
 
67
// Si le site utilise une authentification.
68
if ($GLOBALS['_GEN_commun']['info_auth']->gsa_ce_type_auth == 1) {
1172 jp_milcent 69
	$cookie_persistant_nom = session_name().'-memo';
1090 florian 70
    // Si un formulaire nous renvoie en POST une variable "deconnexion", nous délogons l'utilisateur.
1172 jp_milcent 71
    if ((isset($_REQUEST['deconnexion']) || isset($_REQUEST['logout']))) {
1090 florian 72
		$GLOBALS['_GEN_commun']['pear_auth']->logout();
1172 jp_milcent 73
		// Destruction du cookie de session de Papyrus : est ce utile?
1090 florian 74
		setcookie(session_name(), session_id(), time()-3600, '/');
1172 jp_milcent 75
		// Destruction du cookie de permanence de l'identitification de Papyrus
76
		setcookie($cookie_persistant_nom, '', time()-3600, '/');
77
		//$GLOBALS['_GEN_commun']['pear_auth']->start();
78
    } else {
79
    	if (isset($_REQUEST['connexion'])) {
80
	    	// Si un formulaire nous renvoie en POST une variable "connexion", nous logons l'utilisateur.
81
			// Nous vérifions que l'utilisateur est coché "Mémoriser mon compte"
82
			if (isset($_POST['persistant']) && $_POST['persistant'] == 'o' && IDEN_AUTH_SESSION_DUREE != 0) {
83
		        // Expiration si l'utilisateur ne referme pas son navigateur
84
				$GLOBALS['_GEN_commun']['pear_auth']->setExpire((int)IDEN_AUTH_SESSION_DUREE);
85
				// Création d'un cookie pour rendre permanente l'identification de Papyrus
86
				$cookie_val = md5($_POST['password']).$_POST['username'];
87
				setcookie($cookie_persistant_nom, $cookie_val, (int)IDEN_AUTH_SESSION_DUREE, '/');
88
			}
89
	    } else if (isset($_COOKIE[$cookie_persistant_nom])) {
90
			// Si un cookie existe, nous loggons l'utilisateur.
91
			$GLOBALS['_GEN_commun']['pear_auth']->password = substr($_COOKIE[$cookie_persistant_nom], 0, 32 );
92
			$GLOBALS['_GEN_commun']['pear_auth']->username = substr($_COOKIE[$cookie_persistant_nom], 32);
93
			// Nous sommes obligés de crypter le mot de passe
1176 jp_milcent 94
			if (isset($GLOBALS['_GEN_commun']['pear_auth']->storage_options)) {
1172 jp_milcent 95
				$GLOBALS['_GEN_commun']['pear_auth']->storage_options['cryptType'] = 'none';
1176 jp_milcent 96
    		}
97
    		if (isset($GLOBALS['_GEN_commun']['pear_auth']->storage->options)) {
1172 jp_milcent 98
				$GLOBALS['_GEN_commun']['pear_auth']->storage->options['cryptType'] = 'none';
99
			}
1176 jp_milcent 100
 
1090 florian 101
		}
1172 jp_milcent 102
		$GLOBALS['_GEN_commun']['pear_auth']->login();
1176 jp_milcent 103
		//echo '<pre>'.print_r($GLOBALS['_GEN_commun']['pear_auth'], true).'</pre>';
1172 jp_milcent 104
    }
1090 florian 105
}
106
 
107
// +------------------------------------------------------------------------------------------------------+
108
// |                                           LISTE de FONCTIONS                                         |
109
// +------------------------------------------------------------------------------------------------------+
110
 
111
/** Fonction afficherFormIdentification() - Retourne une formulaire pour s'identifier.
112
*
113
* Retourne un formulaire d'identificatin ou de déconnexion suivant que l'utilisateur est
114
* identifié ou pas.
115
*
116
* @param  array  tableau d'éventuel arguments présent dans la balise transmis à la fonction.
117
* @param  array  tableau global de Papyrus.
118
* @return string formulaire de connexion ou de déconnexion.
119
*/
120
function afficherFormIdentification($tab_arguments, $_GEN_commun)
121
{
315 jpm 122
    // Initialisation de variable.
1090 florian 123
    $retour = '';
124
    $objet_pear_auth =& $_GEN_commun['pear_auth'];
125
    $objet_pear_db =& $_GEN_commun['pear_db'];
126
    $InfoAuthBdd =& $_GEN_commun['info_auth_bdd'];
127
    $objet_url =& $_GEN_commun['url'];
128
    $url = $objet_url->getURL();
129
 
130
    // Récupération des valeurs pour le login et le mot de passe
131
    $mot_de_passe = (! isset($_POST['password']))    ? '' : $_POST['password'];
132
    $login        = (! isset($_POST['username']))    ? '' : $_POST['username'];
133
 
134
    // ATTENTION : Partie à supprimer une fois les mise à jour effectué dans l'annuaire de Tela Botanica
135
    // Devrait être déplacer dans l'appli inscription de Tela.
136
    if (isset($InfoAuthBdd->gsab_nom_table) && $InfoAuthBdd->gsab_nom_table == 'annuaire_tela') {
51 jpm 137
        verification_mot_de_passe($objet_pear_db, $mot_de_passe, $login);
138
        if (isset($_POST['connexion'])) {
304 jpm 139
            $objet_pear_auth->login();
1090 florian 140
        }
141
    }
142
 
143
    if (! $objet_pear_auth->getAuth()) {
144
    	// L'utilisateur a essayé de s'identifier mais a échoué
145
    	if ($login != '') {
146
    		$retour .= '<span class="erreur">'.IDEN_ECHEC_AUTH ;
147
    		if (isset($InfoAuthBdd->url_inscription)) {
148
    			$retour .= '<a id="lien_inscription" href="'.$InfoAuthBdd->url_inscription.'">' ;
149
    			$retour .= IDEN_ICI.'</a>' ;
150
    		}
151
    		$retour .= '</span>'."\n";
152
    	}
153
 
154
        // L'utilisateur n'est pas identifié:
155
        $retour .= str_repeat(' ', 16).'<form id="form_connexion" class="form_identification" action="'.$url.'" method="post">'."\n";
156
        $retour .= str_repeat(' ', 16).'<fieldset>'."\n";
157
        $retour .= str_repeat(' ', 20).'<legend>'.IDEN_LG_FORM_LEGEND.'</legend>'."\n";
388 jpm 158
        $retour .= str_repeat(' ', 20).''."\n";
1090 florian 159
        $retour .= str_repeat(' ', 24).'<label for="username">'.IDEN_LG_FORM_LABEL_COURRIEL.'</label>'."\n";
160
        $retour .= str_repeat(' ', 24).'<input type="text"  id="username" name="username" maxlength="80" tabindex="1" value="'.IDEN_LG_FORM_VALUE_COURRIEL.'" />'."\n";
161
        $retour .= str_repeat(' ', 20).''."\n";
162
        $retour .= str_repeat(' ', 20).''."\n";
163
        $retour .= str_repeat(' ', 24).'<label for="password">'.IDEN_LG_FORM_LABEL_MDP.'</label>'."\n";
164
        $retour .= str_repeat(' ', 24).'<input type="password" id="password" name="password" maxlength="80" tabindex="2" value="'.IDEN_LG_FORM_VALUE_MDP.'" />'."\n";
165
        $retour .= str_repeat(' ', 20).''."\n";
166
        $retour .= str_repeat(' ', 20).''."\n";
167
        if (IDEN_AUTH_SESSION_DUREE != 0) {
168
        	$retour .= str_repeat(' ', 24).'<input type="checkbox" id="persistant" name="persistant" tabindex="3" value="o" />'."\n";
169
        	$retour .= str_repeat(' ', 24).'<label id="persistant_label" for="persistant">'.'Mémoriser mon compte'.'</label>'."\n";
170
        }
171
        $retour .= str_repeat(' ', 20).''."\n";
172
        $retour .= str_repeat(' ', 20).''."\n";
173
        $retour .= str_repeat(' ', 24).'<input type="submit" id="connexion" name="connexion" tabindex="4" value="'.IDEN_LG_FORM_VALUE_SUBMIT.'" />'."\n";
174
        $retour .= str_repeat(' ', 20).''."\n";
388 jpm 175
        // Si l'url de la page d'inscription est stockée dans les paramêtres, nous l'affichons
1090 florian 176
        if (isset($InfoAuthBdd->url_inscription) || isset($InfoAuthBdd->url_inscription_aide)) {
177
        	$retour .=  '<p id="inscription_info">';
1059 jp_milcent 178
        	if (isset($InfoAuthBdd->url_inscription)) {
179
            	$retour .=  '<a id="lien_inscription" href="'.$InfoAuthBdd->url_inscription.'">'.
180
                	        IDEN_LG_INSCRIPTION_URL.
181
                    	    '</a>';
1090 florian 182
        	}
183
        	if (isset($InfoAuthBdd->url_inscription_aide)) {
184
        		$retour .=  '<a id="inscription_aide" href="'.$InfoAuthBdd->url_inscription_aide.'">'.
185
                	        IDEN_LG_INSCRIPTION_AIDE.
186
                    	    '</a>';
187
        	}
188
        	$retour .=  '</p>'."\n";
189
        }
190
        $retour .= str_repeat(' ', 16).'</fieldset>'."\n";
191
        $retour .= str_repeat(' ', 16).'</form>';
192
    } else {
308 jpm 193
        // L'utilisateur est identifié. Nous affichons ses informations.
304 jpm 194
        // Affichage du prénom et nom d'une personne ou du nom de la structure en fonction des paramêtres
195
        // de l'annuaire utilisé
337 jpm 196
        $retour .= str_repeat(' ', 16).'<p id="identification_info"><span id="identification_message">'.IDEN_LG_MESSAGE.'</span> ';
1090 florian 197
        // Si les intitulés des champs nom et prénoms d'une personne ou le nom d'une structure sont indiqués nous les affichons
1055 jp_milcent 198
        if (isset($InfoAuthBdd->chp_personne_prenom) && isset($InfoAuthBdd->chp_personne_nom)) {
304 jpm 199
            $retour .=  '<span id="identification_prenom">'.
1055 jp_milcent 200
                        $objet_pear_auth->getAuthData($InfoAuthBdd->chp_personne_prenom).
304 jpm 201
                        '</span> '.
202
                        '<span id="identification_nom">'.
1055 jp_milcent 203
                        $objet_pear_auth->getAuthData($InfoAuthBdd->chp_personne_nom).
304 jpm 204
                        '</span>';
1055 jp_milcent 205
        } elseif (isset($InfoAuthBdd->chp_structure_nom)) {
304 jpm 206
            $retour .=  '<span id="identification_structure">'.
1055 jp_milcent 207
                        $objet_pear_auth->getAuthData($InfoAuthBdd->chp_structure_nom).
304 jpm 208
                        '</span>';
209
        }
210
        $retour .= '</p>'."\n";
369 jpm 211
        $retour .= str_repeat(' ', 16).'<p id="iden_action">'."\n";
212
        // Si l'url de la page de modification de l'inscription est stockée dans les paramêtres, nous l'affichons
1055 jp_milcent 213
        if (isset($InfoAuthBdd->url_inscription_modif)) {
369 jpm 214
            $retour .=  str_repeat(' ', 20).'<a id="lien_inscription_modif" href="'.
1055 jp_milcent 215
                        $InfoAuthBdd->url_inscription_modif.'">'.
369 jpm 216
                        IDEN_LG_INSCRIPTION_URL_MODIF.
217
                        '</a>'."\n";
218
        }
1090 florian 219
        // Affichage du bouton de déconnexion
220
        $objet_url->addQueryString('logout', 1);
221
        $retour .= str_repeat(' ', 20).'<a id="deconnexion" href="'.$objet_url->getURL().'">'.IDEN_LG_DECONNEXION.'</a>'."\n";
222
        $objet_url->removeQueryString('logout');
223
        $retour .= str_repeat(' ', 16).'</p>'."\n";
224
    }
225
    return $retour;
226
}
227
 
228
// +------------------------------------------------------------------------------------------------------+
229
// |                                            PIED du PROGRAMME                                         |
230
// +------------------------------------------------------------------------------------------------------+
231
 
232
 
233
 
234
/* +--Fin du code ----------------------------------------------------------------------------------------+
235
*
4 jpm 236
* $Log: not supported by cvs2svn $
1176 jp_milcent 237
* Revision 1.30  2006/12/14 15:01:05  jp_milcent
238
* Utilisation d'un système permettant de mémoriser les idenitifications.
239
* Passage à Auth 1.4.3 et DB 1.7.6.
240
*
1172 jp_milcent 241
* Revision 1.29  2006/12/12 13:53:54  jp_milcent
242
* Mise en place du nouveau format des balises d'applette.
243
*
1145 jp_milcent 244
* Revision 1.28  2006/12/12 13:26:42  jp_milcent
245
* Modification de la gestion de l'identification. Utilisation des variables de session.
246
*
1140 jp_milcent 247
* Revision 1.27  2006/12/08 18:14:57  jp_milcent
248
* Correction bogue : l'identification ne tenait pas...
249
*
1123 jp_milcent 250
* Revision 1.26  2006/12/01 16:33:40  florian
251
* Amélioration de la gestion des applettes et compatibilité avec le nouveau mode de gestion de l'inclusion des applettes.
252
*
1090 florian 253
* Revision 1.25  2006/11/20 18:40:33  jp_milcent
254
* Amélioration de la gestion des infos sur l'inscription.
255
* Ajout du paramêtre url_inscription_aide permettant d'indiquer l'url vers une page d'aide sur l'inscription.
256
*
1059 jp_milcent 257
* Revision 1.24  2006/11/20 17:42:40  jp_milcent
258
* Ajout d'un test activant ou pas la mémorisation de l'identification.
259
*
1056 jp_milcent 260
* Revision 1.23  2006/11/20 17:30:40  jp_milcent
261
* Amélioration de la gestion de l'identification.
262
* Utilisation des durées de session correcte.
263
* Suppression du code pour Spip non fonctionnel.
264
*
1055 jp_milcent 265
* Revision 1.22  2006/09/21 15:25:17  jp_milcent
266
* Nettoyage dans l'url de la querystring logout.
267
*
959 jp_milcent 268
* Revision 1.21  2006/03/02 10:49:49  ddelon
269
* Fusion branche multilinguisme dans branche principale
270
*
754 ddelon 271
* Revision 1.20  2005/12/13 11:13:35  alexandre_tb
272
* ajout d'un message si l'identification échoue
273
*
274
* Revision 1.19.2.1  2005/12/20 14:40:24  ddelon
275
* Fusion Head vers Livraison
276
*
277
* Revision 1.20  2005/12/13 11:13:35  alexandre_tb
278
* ajout d'un message si l'identification échoue
279
*
666 alexandre_ 280
* Revision 1.19  2005/10/31 17:09:28  ddelon
281
* Suppression auth start suite à deconnexion ... attention aux effets de bord
282
*
578 ddelon 283
* Revision 1.18  2005/09/27 09:07:32  ddelon
284
* size applette et squelettes
285
*
467 ddelon 286
* Revision 1.17  2005/09/12 09:17:17  alexandre_tb
287
* utilisation de l'objet Net_URL pour ajouter la variable logout dans le lien de déconnexion
288
*
441 alexandre_ 289
* Revision 1.16  2005/06/09 17:06:28  jpm
290
* Ajout de constantes de langue.
291
*
399 jpm 292
* Revision 1.15  2005/06/02 11:56:00  jpm
293
* Modification de l'affichage de l'identification.
294
*
388 jpm 295
* Revision 1.14  2005/05/19 14:00:58  jpm
296
* Déplacement du menu de modif de l'inscription.
297
*
369 jpm 298
* Revision 1.13  2005/04/14 16:37:22  jpm
299
* Ajout de la gestion de la modification de son inscription.
300
*
337 jpm 301
* Revision 1.12  2005/03/25 14:40:51  jpm
302
* Prise en compte du paramêtre url_inscription permettant de faire figurer dans l'applette inscription un lien vers la page d'inscription.
303
*
315 jpm 304
* Revision 1.11  2005/03/17 15:52:17  jpm
305
* Suppression d'un / causant un bogue.
306
*
309 jpm 307
* Revision 1.10  2005/03/15 14:47:14  jpm
308
* Utilisation d'un lien à la place d'un formulaire pour la déconnexion.
309
*
308 jpm 310
* Revision 1.9  2005/03/15 14:17:46  jpm
311
* Ajout d'un fichier de config et de traduction.
312
* Début gestion des constantes de langue.
313
*
304 jpm 314
* Revision 1.8  2005/03/10 12:50:44  alex
315
* remplacement de & par  &amp;
316
*
303 alex 317
* Revision 1.7  2005/01/07 12:43:03  alex
318
* réauction de la taille des champs texte à 12
319
*
246 alex 320
* Revision 1.6  2004/12/13 18:07:09  alex
321
* désauthentification spip presque parfaite
322
*
228 alex 323
* Revision 1.5  2004/09/23 14:31:12  jpm
324
* Correction bogue sur l'identification de l'annuaire_tela.
325
*
51 jpm 326
* Revision 1.4  2004/09/23 10:53:44  jpm
327
* Suppression de l'attribut size. Gestion via les css.
328
*
49 jpm 329
* Revision 1.3  2004/06/28 10:18:48  alex
330
* suppression de balises <p>
331
*
20 alex 332
* Revision 1.2  2004/06/21 07:37:30  alex
333
* Modification d'un label
334
*
17 alex 335
* Revision 1.1  2004/06/15 15:01:41  jpm
336
* Changement de nom et d'arborescence de Genesia en Papyrus.
337
*
4 jpm 338
* Revision 1.5  2004/05/05 06:44:15  jpm
339
* Complément des commentaires indiquant les paquetages nécessaire à l'applette.
1090 florian 340
*
341
* Revision 1.4  2004/05/03 11:18:55  jpm
342
* Intégration de la variable globale de Génésia dans les arguments de la fonction de l'applette.
343
*
344
* Revision 1.3  2004/05/01 17:21:16  jpm
345
* Ajout d'un fieldset et d'une légende au formulaire.
346
*
347
* Revision 1.2  2004/05/01 16:13:07  jpm
348
* Ajout du nom de la balise de l'applette dans le code de l'applette.
349
*
350
* Revision 1.1  2004/05/01 11:42:01  jpm
351
* Ajout de l'applette identification.
352
*
353
*
354
* +-- Fin du code ----------------------------------------------------------------------------------------+
355
*/
4 jpm 356
?>