Subversion Repositories eFlore/Applications.del

Rev

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

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