Subversion Repositories eFlore/Applications.cel

Rev

Rev 986 | Rev 1014 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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