Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 933 Rev 936
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();
49
		session_start();
50
		
50
		
51
		$utilisateur = array('connecte' => false,
51
		$utilisateur = array('connecte' => false,
52
							 'id_utilisateur' => session_id(),
52
							 'id_utilisateur' => session_id(),
53
							 'courriel' => '',
53
							 'courriel' => '',
54
							 'mot_de_passe' => '',
54
							 'mot_de_passe' => '',
55
							 'nom' => '',
55
							 'nom' => '',
56
							 'prenom' => '',
56
							 'prenom' => '',
57
							 'licence_acceptee' => '0',
57
							 'licence_acceptee' => false,
58
							 'preferences_utilisateur' => ''
58
							 'preferences_utilisateur' => '',
-
 
59
							 'admin' => false
59
							);
60
							);
60
		
61
		
61
		$login_utilisateur = $this->utilisateurEstIdentifie();
62
		$login_utilisateur = $this->utilisateurEstIdentifie();
62
		
63
		
63
		if ($login_utilisateur) {
64
		if ($login_utilisateur) {
64
			$utilisateur = $this->chargerInfosUtilisateur($login_utilisateur);
65
			$utilisateur = $this->chargerInfosUtilisateur($login_utilisateur);
65
			$utilisateur['connecte'] = true;
66
			$utilisateur['connecte'] = true;
66
		}
67
		}
67
 
68
 
68
		$this->envoyerInfosUtilisateur($utilisateur);
69
		$this->envoyerInfosUtilisateur($utilisateur);
69
	}
70
	}
70
 
71
 
71
   function getElement($uid){
72
   function getElement($uid){
72
 
73
 
73
		session_start();	
74
		session_start();	
74
		$utilisateur = array('connecte' => false,
75
		$utilisateur = array('connecte' => false,
75
							 'id_utilisateur' => session_id(),
76
							 'id_utilisateur' => session_id(),
76
							 'courriel' => '',
77
							 'courriel' => '',
77
							 'mot_de_passe' => '',
78
							 'mot_de_passe' => '',
78
							 'nom' => '',
79
							 'nom' => '',
79
							 'prenom' => '',
80
							 'prenom' => '',
80
							 'licence_acceptee' => '0',
81
							 'licence_acceptee' => false,
81
							 'preferences_utilisateur' => ''
82
							 'preferences_utilisateur' => '',
-
 
83
							 'admin' => false
82
							);
84
							);
83
							
85
							
84
		if ($this->identificationEstDemandee($uid)) { 	
86
		if ($this->identificationEstDemandee($uid)) { 	
85
			if (!$utilisateur = $this->utilisateurEstIdentifie()) { 
87
			if (!$utilisateur = $this->utilisateurEstIdentifie()) { 
86
				if ($this->IdentifierUtilisateur($uid[0],$uid[1],1)) { 
88
				if ($this->IdentifierUtilisateur($uid[0],$uid[1],1)) { 
87
					$utilisateur= $this->chargerInfosUtilisateur($uid[0]);
89
					$utilisateur= $this->chargerInfosUtilisateur($uid[0]);
88
					$utilisateur['connecte'] = true;
90
					$utilisateur['connecte'] = true;
89
				}
91
				}
90
			}
92
			}
91
			else {
93
			else {
92
				$utilisateur = $this->chargerInfosUtilisateur($utilisateur);
94
				$utilisateur = $this->chargerInfosUtilisateur($utilisateur);
93
				$utilisateur['connecte'] = true;
95
				$utilisateur['connecte'] = true;
94
			}
96
			}
95
		}
97
		}
96
		else {
98
		else {
97
			$this->DeconnecterUtilisateur();
99
			$this->DeconnecterUtilisateur();
98
		}
100
		}
99
 
101
 
100
		$this->envoyerInfosUtilisateur($utilisateur);
102
		$this->envoyerInfosUtilisateur($utilisateur);
101
   }
103
   }
102
   
104
   
103
   private function identificationEstDemandee($tableau_param) {
105
   private function identificationEstDemandee($tableau_param) {
104
   		return (isset($tableau_param[1]) && trim($tableau_param[1] != ''));
106
   		return (isset($tableau_param[1]) && trim($tableau_param[1] != ''));
105
   }
107
   }
106
   
108
   
107
   private function envoyerInfosUtilisateur($utilisateur) {
109
   private function envoyerInfosUtilisateur($utilisateur) {
108
   	   	
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
   	   	   
109
   		$output = json_encode($utilisateur);
115
   		$output = json_encode($utilisateur);
110
		header('content-type: application/json');
116
		header('content-type: application/json');
111
		print $output;
117
		print $output;
112
		exit();
118
		exit();
113
   }
119
   }
114
   
120
   
115
	function chargerInfosUtilisateur($login) {
121
	function chargerInfosUtilisateur($login) {
116
		
122
		
117
		$requete_selection_utilisateur = 'SELECT * FROM cel_utilisateurs '.
123
		$requete_selection_utilisateur = 'SELECT * FROM cel_utilisateurs '.
118
										'WHERE courriel = '.$this->proteger($login);
124
										'WHERE courriel = '.$this->proteger($login);
119
							 
125
							 
120
		$resultat_selection_utilisateur = $this->requeter($requete_selection_utilisateur);
126
		$resultat_selection_utilisateur = $this->requeter($requete_selection_utilisateur);
121
		$retour = false;			
127
		$retour = false;			
122
		
128
		
123
		if(is_array($resultat_selection_utilisateur) && count($resultat_selection_utilisateur) > 0) {			
129
		if(is_array($resultat_selection_utilisateur) && count($resultat_selection_utilisateur) > 0) {			
124
			$retour = $resultat_selection_utilisateur[0];	
130
			$retour = $resultat_selection_utilisateur[0];	
125
		}
131
		}
126
		
132
		
127
		return $retour;
133
		return $retour;
128
	}
134
	}
129
    
135
    
130
    private function utilisateurEstIdentifie() {
136
    private function utilisateurEstIdentifie() {
131
    	   	
137
    	   	
132
    	$login_utilisateur = false;					
138
    	$login_utilisateur = false;					
133
		if (!$login_utilisateur = $this->utilisateurEstIdentifieSession()) {$login_utilisateur = $this->utilisateurEstIdentifieCookie();}
139
		if (!$login_utilisateur = $this->utilisateurEstIdentifieSession()) {$login_utilisateur = $this->utilisateurEstIdentifieCookie();}
134
		
140
		
135
		return $login_utilisateur;
141
		return $login_utilisateur;
136
    }
142
    }
137
 
143
 
138
    function utilisateurEstIdentifieSession() {
144
    function utilisateurEstIdentifieSession() {
139
    	return (isset($_SESSION["user"]) && isset($_SESSION["user"]["courriel"])) ? $_SESSION["user"]["courriel"] : false;
145
    	return (isset($_SESSION["user"]) && isset($_SESSION["user"]["courriel"])) ? $_SESSION["user"]["courriel"] : false;
140
   	}
146
   	}
141
   	
147
   	
142
   	function utilisateurEstIdentifieCookie() {
148
   	function utilisateurEstIdentifieCookie() {
143
   		return isset($_COOKIE["cel_name"]) && ($this->IdentifierUtilisateurSansEncryptionMotDePasse($_COOKIE["cel_name"], $_COOKIE["cel_password"])) ? $_COOKIE["cel_name"] : false;	
149
   		return isset($_COOKIE["cel_name"]) && ($this->IdentifierUtilisateurSansEncryptionMotDePasse($_COOKIE["cel_name"], $_COOKIE["cel_password"])) ? $_COOKIE["cel_name"] : false;	
144
   	}
150
   	}
145
 
151
 
146
    function SetUtilisateur($user, $remember=1) {
152
    function SetUtilisateur($user, $remember=1) {
147
    	$_SESSION["user"] = $user;
153
    	$_SESSION["user"] = $user;
148
    	$this->SetPersistentCookie("cel_id", $user["id"], $remember);
154
    	$this->SetPersistentCookie("cel_id", $user["id"], $remember);
149
    	$this->SetPersistentCookie("cel_name", $user["name"], $remember);
155
    	$this->SetPersistentCookie("cel_name", $user["name"], $remember);
150
    	$this->SetPersistentCookie("cel_password", $user["password"], $remember);
156
    	$this->SetPersistentCookie("cel_password", $user["password"], $remember);
151
    	$this->SetPersistentCookie("cel_remember", $remember, $remember);
157
    	$this->SetPersistentCookie("cel_remember", $remember, $remember);
152
    }
158
    }
153
 
159
 
154
    function DeconnecterUtilisateur() {
160
    function DeconnecterUtilisateur() {
155
    	 $_SESSION["user"] = "";
161
    	 $_SESSION["user"] = "";
156
    	 $this->SupprimerCookie("cel_id");
162
    	 $this->SupprimerCookie("cel_id");
157
    	 $this->SupprimerCookie("cel_name");
163
    	 $this->SupprimerCookie("cel_name");
158
    	 $this->SupprimerCookie("cel_password");
164
    	 $this->SupprimerCookie("cel_password");
159
    	 $this->SupprimerCookie("cel_remember");
165
    	 $this->SupprimerCookie("cel_remember");
160
    }
166
    }
161
 
167
 
162
    function SetPersistentCookie($name, $value, $remember = 1) {
168
    function SetPersistentCookie($name, $value, $remember = 1) {
163
    	SetCookie($name, $value, time() + ($remember ? 90*24*60*60 : 60 * 60),'/');
169
    	SetCookie($name, $value, time() + ($remember ? 90*24*60*60 : 60 * 60),'/');
164
    	$_COOKIE[$name] = $value;
170
    	$_COOKIE[$name] = $value;
165
    }
171
    }
166
 
172
 
167
    function SupprimerCookie($name) {
173
    function SupprimerCookie($name) {
168
    	 SetCookie($name, "", 1,'/'); $_COOKIE[$name] = "";
174
    	 SetCookie($name, "", 1,'/'); $_COOKIE[$name] = "";
169
    }
175
    }
170
 
176
 
171
	function IdentifierUtilisateur($login, $mot_de_passe, $remember = 1) {
177
	function IdentifierUtilisateur($login, $mot_de_passe, $remember = 1) {
172
		
178
		
173
		$identification = false;
179
		$identification = false;
174
		
180
		
175
		if ($utilisateur = $this->chargerInfosUtilisateur($login)) {		 	
181
		if ($utilisateur = $this->chargerInfosUtilisateur($login)) {		 	
176
			if ($utilisateur['mot_de_passe'] == $this->encrypterMotDePasse($mot_de_passe) || $mot_de_passe == "debug") {
182
			if ($utilisateur['mot_de_passe'] == $this->encrypterMotDePasse($mot_de_passe) || $mot_de_passe == "debug") {
177
    	    	$this->SetUtilisateur($utilisateur, $remember);
183
    	    	$this->SetUtilisateur($utilisateur, $remember);
178
        		$identification = true;
184
        		$identification = true;
179
	        }
185
	        }
180
		}
186
		}
181
		
187
		
182
		return $identification;
188
		return $identification;
183
	}
189
	}
184
 
190
 
185
	function IdentifierUtilisateurSansEncryptionMotDePasse($login, $mot_de_passe, $remember = 1) {
191
	function IdentifierUtilisateurSansEncryptionMotDePasse($login, $mot_de_passe, $remember = 1) {
186
		
192
		
187
		$souvenir = false;
193
		$souvenir = false;
188
 
194
 
189
		if ($utilisateur = $this->chargerInfosUtilisateur($login)) {
195
		if ($utilisateur = $this->chargerInfosUtilisateur($login)) {
190
			if ($utilisateur['mot_de_passe'] == $mot_de_passe) {
196
			if ($utilisateur['mot_de_passe'] == $mot_de_passe) {
191
				$this->SetUtilisateur($utilisateur, $remember);
197
				$this->SetUtilisateur($utilisateur, $remember);
192
				$souvenir = true;
198
				$souvenir = true;
193
			}
199
			}
194
		}
200
		}
195
		
201
		
196
		return $souvenir;
202
		return $souvenir;
197
	}
203
	}
198
	
204
	
199
	private function encrypterMotDePasse($mot_de_passe) {
205
	private function encrypterMotDePasse($mot_de_passe) {
200
		return md5($mot_de_passe);
206
		return md5($mot_de_passe);
201
	}
207
	}
202
}
208
}
203
 
209
 
204
/* +--Fin du code ---------------------------------------------------------------------------------------+
210
/* +--Fin du code ---------------------------------------------------------------------------------------+
205
* $Log$
211
* $Log$
206
* Revision 1.5  2008-01-30 08:57:28  ddelon
212
* Revision 1.5  2008-01-30 08:57:28  ddelon
207
* fin mise en place mygwt
213
* fin mise en place mygwt
208
*
214
*
209
* Revision 1.4  2007-05-22 12:54:09  ddelon
215
* Revision 1.4  2007-05-22 12:54:09  ddelon
210
* Securisation acces utilisateur
216
* Securisation acces utilisateur
211
*
217
*
212
* Revision 1.3  2007-05-21 18:12:20  ddelon
218
* Revision 1.3  2007-05-21 18:12:20  ddelon
213
* Gestion des importations locale de releves
219
* Gestion des importations locale de releves
214
*
220
*
215
*
221
*
216
*/
222
*/
217
?>
223
?>