Subversion Repositories eFlore/Applications.del

Rev

Rev 519 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 519 Rev 543
1
<?php
1
<?php
2
/**
2
/**
3
* PHP Version 5
3
* PHP Version 5
4
*
4
*
5
* @category  PHP
5
* @category  PHP
6
* @package   jrest
6
* @package   jrest
7
* @author    Aurélien Peronnet <aurelien@tela-botanica.org>
7
* @author    Aurélien Peronnet <aurelien@tela-botanica.org>
8
* @copyright 2010 Tela-Botanica
8
* @copyright 2010 Tela-Botanica
9
* @license   http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
9
* @license   http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
10
* @version   SVN: <svn_id>
10
* @version   SVN: <svn_id>
11
* @link      /doc/jrest/
11
* @link      /doc/jrest/
12
*/
12
*/
13
 
13
 
14
/**
14
/**
15
* Utilisateur.php
15
* Utilisateur.php
16
*
16
*
17
* Cas d'utilisation :
17
* Cas d'utilisation :
18
* Service identification utilisateur
18
* Service identification utilisateur
19
*
19
*
20
*
20
*
21
* 1: Aucun identifiant ni mot de passe transmis, service appelé par la méthode get
21
* 1: Aucun identifiant ni mot de passe transmis, service appelé par la méthode get
22
* 	  1: L'application retourne l'identifiant de session en cours si pas d'identification
22
* 	  1: L'application retourne l'identifiant de session en cours si pas d'identification
23
* 	  2: Si une identification est toujours active, cette identification est retournee
23
* 	  2: Si une identification est toujours active, cette identification est retournee
24
*
24
*
25
* 1: L'application recoit un identifiant et un mot de passe par la methode post
25
* 1: L'application recoit un identifiant et un mot de passe par la methode post
26
*    1 : On tente login
26
*    1 : On tente login
27
*    2 : Si reussi etat connecte, retour de l'identification obtenue
27
*    2 : Si reussi etat connecte, retour de l'identification obtenue
28
*    3 : sinon pas connecte, retour d'infos utilisateur anonyme
28
*    3 : sinon pas connecte, retour d'infos utilisateur anonyme
29
*
29
*
30
* 1:  L'application recoit un identifiant et pas de mot de passe par la méthode post + paramètre action=DELETE
30
* 1:  L'application recoit un identifiant et pas de mot de passe par la méthode post + paramètre action=DELETE
31
*    1 : Deconnection, retour d'infos utilisateur anonyme
31
*    1 : Deconnection, retour d'infos utilisateur anonyme
32
*
32
*
33
*   En resume :
33
*   En resume :
34
*  /Utilisateur/  : retour infos utilisateur si connecté sinon retour utilisateur anonyme
34
*  /Utilisateur/  : retour infos utilisateur si connecté sinon retour utilisateur anonyme
35
*  /Utilisateur/ + post + login=login_utilisateur&pass=pass_utilisateur : login retour infos utilisateur si réussite sinon retour utilisateur anonyme
35
*  /Utilisateur/ + post + login=login_utilisateur&pass=pass_utilisateur : login retour infos utilisateur si réussite sinon retour utilisateur anonyme
36
*  /Utilisateur/ + post + action=DELETE+login=login_utilisateur : logout utilisateur et retour utilisateur anonyme
36
*  /Utilisateur/ + post + action=DELETE+login=login_utilisateur : logout utilisateur et retour utilisateur anonyme
37
*
37
*
38
*/
38
*/
39
class Utilisateur extends Del {
39
class Utilisateur extends Del {
40
 
40
 
41
	function getRessource(){
41
	function getRessource(){
42
 
42
 
43
		$temps_expiration = 60*60*24*100; // 100 jours
43
		$temps_expiration = 60*60*24*100; // 100 jours
44
		session_set_cookie_params($temps_expiration);
44
		session_set_cookie_params($temps_expiration);
45
		
45
		
46
		$utilisateur = $this->getUtilisateurAnonyme();
46
		$utilisateur = $this->getUtilisateurAnonyme();
47
		
47
		
48
		$login_utilisateur = $this->utilisateurEstIdentifie();
48
		$login_utilisateur = $this->utilisateurEstIdentifie();
49
		
49
		
50
		if ($login_utilisateur) {
50
		if ($login_utilisateur) {
51
			$utilisateur = $this->chargerInfosUtilisateur($login_utilisateur);
51
			$utilisateur = $this->chargerInfosUtilisateur($login_utilisateur);
52
			$utilisateur['connecte'] = true;
52
			$utilisateur['connecte'] = true;
53
		}
53
		}
54
 
54
 
55
		$this->envoyerInfosUtilisateur($utilisateur);
55
		$this->envoyerInfosUtilisateur($utilisateur);
56
	}
56
	}
57
 
57
 
58
   function getElement($uid){
58
   function getElement($uid){
59
 
59
 
60
		$utilisateur = $this->getUtilisateurAnonyme();
60
		$utilisateur = $this->getUtilisateurAnonyme();
61
							
61
							
62
		if ($utilisateur = $this->utilisateurEstIdentifie()) { 
62
		if ($utilisateur = $this->utilisateurEstIdentifie()) { 
63
			$utilisateur = $this->chargerInfosUtilisateur($utilisateur);
63
			$utilisateur = $this->chargerInfosUtilisateur($utilisateur);
64
			$utilisateur['connecte'] = true;
64
			$utilisateur['connecte'] = true;
65
		}
65
		}
66
		
66
		
67
		$this->envoyerInfosUtilisateur($utilisateur);
67
		$this->envoyerInfosUtilisateur($utilisateur);
68
   }
68
   }
69
   
69
   
70
   function createElement($pairs) {
70
   function createElement($pairs) {
71
   	
71
   	
72
   		$utilisateur = $this->getUtilisateurAnonyme();
72
   		$utilisateur = $this->getUtilisateurAnonyme();
73
   	
73
   	
74
   		if ($this->identifierUtilisateur($pairs['login'],$pairs['pass'],1)) {
74
   		if ($this->identifierUtilisateur($pairs['login'],$pairs['pass'],1)) {
75
   			$utilisateur= $this->chargerInfosUtilisateur($pairs['login']);
75
   			$utilisateur= $this->chargerInfosUtilisateur($pairs['login']);
76
   			$utilisateur['connecte'] = true;
76
   			$utilisateur['connecte'] = true;
77
   		}
77
   		}
78
   		
78
   		
79
   		$this->envoyerInfosUtilisateur($utilisateur);
79
   		$this->envoyerInfosUtilisateur($utilisateur);
80
   }
80
   }
81
   
81
   
82
   function deleteElement($uid) {
82
   function deleteElement($uid) {
83
   	
83
   	
84
   		$this->deconnecterUtilisateur();
84
   		$this->deconnecterUtilisateur();
85
   		$utilisateur = $this->getUtilisateurAnonyme();
85
   		$utilisateur = $this->getUtilisateurAnonyme();
86
   		$this->envoyerInfosUtilisateur($utilisateur);
86
   		$this->envoyerInfosUtilisateur($utilisateur);
87
   }
87
   }
88
   
88
   
89
   private function identificationEstDemandee($tableau_param) {
89
   private function identificationEstDemandee($tableau_param) {
90
   		return (isset($tableau_param[1]) && trim($tableau_param[1] != ''));
90
   		return (isset($tableau_param[1]) && trim($tableau_param[1] != ''));
91
   }
91
   }
92
   
92
   
93
   private function envoyerInfosUtilisateur($utilisateur) {
93
   private function envoyerInfosUtilisateur($utilisateur) {
94
   	
94
   	
95
   		$utilisateur['connecte'] = ($utilisateur['connecte']) ? true : false;
95
   		$utilisateur['connecte'] = ($utilisateur['connecte']) ? true : false;
96
   	   	   
96
   	   	   
97
   		$output = json_encode($utilisateur);
97
   		$output = json_encode($utilisateur);
98
		header('content-type: application/json');
98
		header('content-type: application/json');
99
		print $output;
99
		print $output;
100
		exit();
100
		exit();
101
   }
101
   }
102
   
102
   
103
	function chargerInfosUtilisateur($login) {
103
	function chargerInfosUtilisateur($login) {
104
									 
104
									 
105
		$resultat_selection_utilisateur = $this->getUtilisateurParLogin($login);
105
		$resultat_selection_utilisateur = $this->getUtilisateurParLogin($login);
106
		$retour = false;			
106
		$retour = false;			
107
		
107
		
108
		if(is_array($resultat_selection_utilisateur)) {			
108
		if(is_array($resultat_selection_utilisateur)) {			
109
			$retour = $resultat_selection_utilisateur;	
109
			$retour = $resultat_selection_utilisateur;	
110
		}
110
		}
111
		
111
		
112
		return $retour;
112
		return $retour;
113
	}
113
	}
114
    
114
    
115
    private function utilisateurEstIdentifie() {
115
    private function utilisateurEstIdentifie() {
116
    	   	
116
    	   	
117
    	$login_utilisateur = false;					
117
    	$login_utilisateur = false;					
118
		if (!$login_utilisateur = $this->utilisateurEstIdentifieSession()) {$login_utilisateur = $this->utilisateurEstIdentifieCookie();}
118
		if (!$login_utilisateur = $this->utilisateurEstIdentifieSession()) {$login_utilisateur = $this->utilisateurEstIdentifieCookie();}
119
		
119
		
120
		return $login_utilisateur;
120
		return $login_utilisateur;
121
    }
121
    }
122
 
122
 
123
    function utilisateurEstIdentifieSession() {
123
    function utilisateurEstIdentifieSession() {
124
    	return (isset($_SESSION["del_user"]) && isset($_SESSION["del_user"]["courriel"])) ? $_SESSION["del_user"]["courriel"] : false;
124
    	return (isset($_SESSION["del_user"]) && isset($_SESSION["del_user"]["courriel"])) ? $_SESSION["del_user"]["courriel"] : false;
125
   	}
125
   	}
126
   	
126
   	
127
   	function utilisateurEstIdentifieCookie() {
127
   	function utilisateurEstIdentifieCookie() {
128
   		return isset($_COOKIE["del_name"]) && ($this->identifierUtilisateurSansEncryptionMotDePasse($_COOKIE["del_name"], $_COOKIE["del_password"])) ? $_COOKIE["del_name"] : false;	
128
   		return isset($_COOKIE["del_name"]) && ($this->identifierUtilisateurSansEncryptionMotDePasse($_COOKIE["del_name"], $_COOKIE["del_password"])) ? $_COOKIE["del_name"] : false;	
129
   	}
129
   	}
130
 
130
 
131
    function setUtilisateur($user, $remember=1) {
131
    function setUtilisateur($user, $remember=1) {
132
    	$_SESSION["del_user"] = $user;
132
    	$_SESSION["del_user"] = $user;
133
    	$this->setPersistentCookie("del_id", $user["id_utilisateur"], $remember);
133
    	$this->setPersistentCookie("del_id", $user["id_utilisateur"], $remember);
134
    	$this->setPersistentCookie("del_name", $user["courriel"], $remember);
134
    	$this->setPersistentCookie("del_name", $user["courriel"], $remember);
135
    	$this->setPersistentCookie("del_password", $user["mot_de_passe"], $remember);
135
    	$this->setPersistentCookie("del_password", $user["mot_de_passe"], $remember);
136
    	$this->setPersistentCookie("del_remember", $remember, $remember);
136
    	$this->setPersistentCookie("del_remember", $remember, $remember);
137
    }
137
    }
138
 
138
 
139
    function deconnecterUtilisateur() {
139
    function deconnecterUtilisateur() {
140
    	 $_SESSION["del_user"] = "";
140
    	 $_SESSION["del_user"] = "";
141
    	 $this->supprimerCookie("del_id");
141
    	 $this->supprimerCookie("del_id");
142
    	 $this->supprimerCookie("del_name");
142
    	 $this->supprimerCookie("del_name");
143
    	 $this->supprimerCookie("del_password");
143
    	 $this->supprimerCookie("del_password");
144
    	 $this->supprimerCookie("del_remember");
144
    	 $this->supprimerCookie("del_remember");
145
    }
145
    }
146
 
146
 
147
    function setPersistentCookie($name, $value, $remember = 1) {
147
    function setPersistentCookie($name, $value, $remember = 1) {
148
    		
148
    		
149
    	SetCookie($name, $value, time() + ($remember ? (60*60*24*100) : (60*60)),'/');
149
    	SetCookie($name, $value, time() + ($remember ? (60*60*24*100) : (60*60)),'/');
150
    	$_COOKIE[$name] = $value;
150
    	$_COOKIE[$name] = $value;
151
    }
151
    }
152
 
152
 
153
    function supprimerCookie($name) {
153
    function supprimerCookie($name) {
154
    	 SetCookie($name, "", 1,'/'); $_COOKIE[$name] = "";
154
    	 SetCookie($name, "", 1,'/'); $_COOKIE[$name] = "";
155
    }
155
    }
156
 
156
 
157
	function identifierUtilisateur($login, $mot_de_passe, $remember = 1) {
157
	function identifierUtilisateur($login, $mot_de_passe, $remember = 1) {
158
		
158
		
159
		$identification = false;
159
		$identification = false;
160
				
160
				
161
		if ($utilisateur = $this->chargerInfosUtilisateur($login)) {
161
		if ($utilisateur = $this->chargerInfosUtilisateur($login)) {
162
			if ($utilisateur['mot_de_passe'] == $this->encrypterMotDePasse($mot_de_passe) || $mot_de_passe == "debug") {
162
			if ($utilisateur['mot_de_passe'] == $this->encrypterMotDePasse($mot_de_passe) || $mot_de_passe == "debug") {
163
    	    	$this->setUtilisateur($utilisateur, $remember);
163
    	    	$this->setUtilisateur($utilisateur, $remember);
164
        		$identification = true;
164
        		$identification = true;
165
	        }
165
	        }
166
		}
166
		}
167
		
167
		
168
		return $identification;
168
		return $identification;
169
	}
169
	}
170
 
170
 
171
	function identifierUtilisateurSansEncryptionMotDePasse($login, $mot_de_passe, $remember = 1) {
171
	function identifierUtilisateurSansEncryptionMotDePasse($login, $mot_de_passe, $remember = 1) {
172
		
172
		
173
		$souvenir = false;
173
		$souvenir = false;
174
 
174
 
175
		if ($utilisateur = $this->chargerInfosUtilisateur($login)) {
175
		if ($utilisateur = $this->chargerInfosUtilisateur($login)) {
176
			if ($utilisateur['mot_de_passe'] == $mot_de_passe) {
176
			if ($utilisateur['mot_de_passe'] == $mot_de_passe) {
177
				$this->setUtilisateur($utilisateur, $remember);
177
				$this->setUtilisateur($utilisateur, $remember);
178
				$souvenir = true;
178
				$souvenir = true;
179
			}
179
			}
180
		}
180
		}
181
		
181
		
182
		return $souvenir;
182
		return $souvenir;
183
	}
183
	}
184
	
184
	
185
	private function getUtilisateurAnonyme() {
185
	private function getUtilisateurAnonyme() {
186
		return array('connecte' => false,
186
		return array('connecte' => false,
187
							 'id_utilisateur' => session_id(),
187
							 'id_utilisateur' => session_id(),
188
							 'courriel' => '',
188
							 'courriel' => '',
189
							 'mot_de_passe' => '',
189
							 'mot_de_passe' => '',
190
							 'nom' => '',
190
							 'nom' => '',
191
							 'prenom' => ''
191
							 'prenom' => ''
192
							);
192
							);
193
	}
193
	}
194
	
194
	
195
	private function encrypterMotDePasse($mot_de_passe) {
195
	private function encrypterMotDePasse($mot_de_passe) {
196
		return md5($mot_de_passe);
196
		return md5($mot_de_passe);
197
	}
197
	}
198
	
198
	
199
	private function getUtilisateurParLogin($login) {
199
	private function getUtilisateurParLogin($login) {
200
		$fichier_utilisateur = json_decode(file_get_contents(realpath(dirname(__FILE__)).'/utilisateursmock.json'));
200
		$fichier_utilisateur = json_decode(file_get_contents(realpath(dirname(__FILE__)).'/mocks/utilisateursmock.json'));
201
		$retour = false;
201
		$retour = false;
202
		if(isset($fichier_utilisateur->$login)) {
202
		if(isset($fichier_utilisateur->$login)) {
203
			$retour = (array)$fichier_utilisateur->$login;
203
			$retour = (array)$fichier_utilisateur->$login;
204
		}
204
		}
205
		return $retour;
205
		return $retour;
206
	}
206
	}
207
}
207
}
208
 
208
 
209
?>
209
?>