Subversion Repositories eFlore/Applications.cel

Rev

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

Rev Author Line No. Line
416 aurelien 1
<?php
933 aurelien 2
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel //
416 aurelien 3
/**
933 aurelien 4
* PHP Version 5
5
*
6
* @category  PHP
7
* @package   jrest
8
* @author    David Delon <devid.delon@clapas.net>
9
* @author    Aurélien Peronnet <devid.delon@clapas.net>
10
* @copyright 2010 Tela-Botanica
11
* @license   http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
12
* @version   SVN: <svn_id>
13
* @link      /doc/jrest/
416 aurelien 14
*/
933 aurelien 15
 
16
/**
17
* User.php
18
*
19
* Cas d'utilisation :
20
* Service identification utilisateur
21
*
22
*
23
* 1: Aucun identifiant ni mot de passe transmis
24
* 	  1: L'application retourne l'identifiant de session en cours
25
* 	  2: Une identification est toujours active, cette identification est retournee
26
*
27
* 1: L'application recoit un identifiant et un mot de passe
28
*    1 : On tente login
29
*    2 : Si reussi etat connecte, retour de l'identification obtenue
30
*    3 : sinon pas connecte, retour d'infos utilisateur anonyme
31
*
32
* 1:  L'application recoit un identifiant et pas de mot de passe :
33
*    1 : Deconnection, retour d'infos utilisateur anonyme
34
*
35
*   En resume :
36
*  /User/  : retour infos utilisateur si connecté sinon infos utilisateur anonyme
37
*  /User/login_utilisateur : logout retour infos utilisateur anonyme
38
*  /User/login_utilisateur/password : login retour infos utilisateur si succès sinon infos utilisateur anonyme
39
*
40
*/
41
class User extends Cel {
416 aurelien 42
 
933 aurelien 43
	// TODO : controle systematique ....dans tous les services
44
	// Si connected : name cookie = name service
416 aurelien 45
	function getRessource(){
46
 
933 aurelien 47
		$temps_expiration = 60*60*24*100; // 100 jours
48
		session_set_cookie_params($temps_expiration);
416 aurelien 49
		session_start();
763 aurelien 50
 
933 aurelien 51
		$utilisateur = array('connecte' => false,
52
							 'id_utilisateur' => session_id(),
53
							 'courriel' => '',
54
							 'mot_de_passe' => '',
55
							 'nom' => '',
56
							 'prenom' => '',
936 aurelien 57
							 'licence_acceptee' => false,
58
							 'preferences_utilisateur' => '',
59
							 'admin' => false
933 aurelien 60
							);
61
 
62
		$login_utilisateur = $this->utilisateurEstIdentifie();
63
 
64
		if ($login_utilisateur) {
65
			$utilisateur = $this->chargerInfosUtilisateur($login_utilisateur);
66
			$utilisateur['connecte'] = true;
416 aurelien 67
		}
68
 
933 aurelien 69
		$this->envoyerInfosUtilisateur($utilisateur);
416 aurelien 70
	}
71
 
72
   function getElement($uid){
73
 
933 aurelien 74
		session_start();
75
		$utilisateur = array('connecte' => false,
76
							 'id_utilisateur' => session_id(),
77
							 'courriel' => '',
78
							 'mot_de_passe' => '',
79
							 'nom' => '',
80
							 'prenom' => '',
936 aurelien 81
							 'licence_acceptee' => false,
82
							 'preferences_utilisateur' => '',
83
							 'admin' => false
933 aurelien 84
							);
85
 
86
		if ($this->identificationEstDemandee($uid)) {
87
			if (!$utilisateur = $this->utilisateurEstIdentifie()) {
970 aurelien 88
				if ($this->identifierUtilisateur($uid[0],$uid[1],1)) {
933 aurelien 89
					$utilisateur= $this->chargerInfosUtilisateur($uid[0]);
90
					$utilisateur['connecte'] = true;
416 aurelien 91
				}
92
			}
933 aurelien 93
			else {
94
				$utilisateur = $this->chargerInfosUtilisateur($utilisateur);
95
				$utilisateur['connecte'] = true;
416 aurelien 96
			}
97
		}
933 aurelien 98
		else {
970 aurelien 99
			$this->deconnecterUtilisateur();
416 aurelien 100
		}
101
 
933 aurelien 102
		$this->envoyerInfosUtilisateur($utilisateur);
416 aurelien 103
   }
933 aurelien 104
 
105
   private function identificationEstDemandee($tableau_param) {
106
   		return (isset($tableau_param[1]) && trim($tableau_param[1] != ''));
107
   }
108
 
109
   private function envoyerInfosUtilisateur($utilisateur) {
936 aurelien 110
 
111
   		$utilisateur['connecte'] = ($utilisateur['connecte']) ? true : false;
112
   	   	$utilisateur['licence_acceptee'] = ($utilisateur['licence_acceptee']) ? true : false;
113
   	   	$utilisateur['admin'] = ($utilisateur['admin']) ? true : false;
114
 
933 aurelien 115
   		$output = json_encode($utilisateur);
116
		header('content-type: application/json');
117
		print $output;
118
		exit();
119
   }
120
 
121
	function chargerInfosUtilisateur($login) {
122
 
123
		$requete_selection_utilisateur = 'SELECT * FROM cel_utilisateurs '.
124
										'WHERE courriel = '.$this->proteger($login);
125
 
126
		$resultat_selection_utilisateur = $this->requeter($requete_selection_utilisateur);
127
		$retour = false;
128
 
129
		if(is_array($resultat_selection_utilisateur) && count($resultat_selection_utilisateur) > 0) {
130
			$retour = $resultat_selection_utilisateur[0];
131
		}
132
 
133
		return $retour;
416 aurelien 134
	}
933 aurelien 135
 
136
    private function utilisateurEstIdentifie() {
137
 
138
    	$login_utilisateur = false;
139
		if (!$login_utilisateur = $this->utilisateurEstIdentifieSession()) {$login_utilisateur = $this->utilisateurEstIdentifieCookie();}
140
 
141
		return $login_utilisateur;
416 aurelien 142
    }
143
 
933 aurelien 144
    function utilisateurEstIdentifieSession() {
145
    	return (isset($_SESSION["user"]) && isset($_SESSION["user"]["courriel"])) ? $_SESSION["user"]["courriel"] : false;
416 aurelien 146
   	}
933 aurelien 147
 
148
   	function utilisateurEstIdentifieCookie() {
970 aurelien 149
   		return isset($_COOKIE["cel_name"]) && ($this->identifierUtilisateurSansEncryptionMotDePasse($_COOKIE["cel_name"], $_COOKIE["cel_password"])) ? $_COOKIE["cel_name"] : false;
933 aurelien 150
   	}
416 aurelien 151
 
970 aurelien 152
    function setUtilisateur($user, $remember=1) {
416 aurelien 153
    	$_SESSION["user"] = $user;
970 aurelien 154
    	$this->setPersistentCookie("cel_id", $user["id_utilisateur"], $remember);
155
    	$this->setPersistentCookie("cel_name", $user["courriel"], $remember);
156
    	$this->setPersistentCookie("cel_password", $user["mot_de_passe"], $remember);
157
    	$this->setPersistentCookie("cel_remember", $remember, $remember);
158
 
159
    	print_r($_COOKIE);
416 aurelien 160
    }
161
 
970 aurelien 162
    function deconnecterUtilisateur() {
416 aurelien 163
    	 $_SESSION["user"] = "";
970 aurelien 164
    	 $this->supprimerCookie("cel_id");
165
    	 $this->supprimerCookie("cel_name");
166
    	 $this->supprimerCookie("cel_password");
167
    	 $this->supprimerCookie("cel_remember");
416 aurelien 168
    }
169
 
970 aurelien 170
    function setPersistentCookie($name, $value, $remember = 1) {
171
 
172
    	SetCookie($name, $value, time() + ($remember ? (60*60*24*100) : (60*60)),'/');
416 aurelien 173
    	$_COOKIE[$name] = $value;
174
    }
175
 
970 aurelien 176
    function supprimerCookie($name) {
416 aurelien 177
    	 SetCookie($name, "", 1,'/'); $_COOKIE[$name] = "";
178
    }
179
 
970 aurelien 180
	function identifierUtilisateur($login, $mot_de_passe, $remember = 1) {
605 aurelien 181
 
933 aurelien 182
		$identification = false;
605 aurelien 183
 
933 aurelien 184
		if ($utilisateur = $this->chargerInfosUtilisateur($login)) {
185
			if ($utilisateur['mot_de_passe'] == $this->encrypterMotDePasse($mot_de_passe) || $mot_de_passe == "debug") {
970 aurelien 186
    	    	$this->setUtilisateur($utilisateur, $remember);
933 aurelien 187
        		$identification = true;
188
	        }
605 aurelien 189
		}
190
 
933 aurelien 191
		return $identification;
192
	}
193
 
970 aurelien 194
	function identifierUtilisateurSansEncryptionMotDePasse($login, $mot_de_passe, $remember = 1) {
933 aurelien 195
 
196
		$souvenir = false;
197
 
198
		if ($utilisateur = $this->chargerInfosUtilisateur($login)) {
199
			if ($utilisateur['mot_de_passe'] == $mot_de_passe) {
970 aurelien 200
				$this->setUtilisateur($utilisateur, $remember);
933 aurelien 201
				$souvenir = true;
202
			}
605 aurelien 203
		}
204
 
933 aurelien 205
		return $souvenir;
605 aurelien 206
	}
933 aurelien 207
 
208
	private function encrypterMotDePasse($mot_de_passe) {
209
		return md5($mot_de_passe);
210
	}
416 aurelien 211
}
212
 
213
/* +--Fin du code ---------------------------------------------------------------------------------------+
214
* $Log$
215
* Revision 1.5  2008-01-30 08:57:28  ddelon
216
* fin mise en place mygwt
217
*
218
* Revision 1.4  2007-05-22 12:54:09  ddelon
219
* Securisation acces utilisateur
220
*
221
* Revision 1.3  2007-05-21 18:12:20  ddelon
222
* Gestion des importations locale de releves
223
*
224
*
225
*/
933 aurelien 226
?>