Subversion Repositories eFlore/Applications.del

Rev

Go to most recent revision | Details | 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
*
21
* 1: Aucun identifiant ni mot de passe transmis
22
* 	  1: L'application retourne l'identifiant de session en cours
23
* 	  2: Une identification est toujours active, cette identification est retournee
24
*
25
* 1: L'application recoit un identifiant et un mot de passe
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
*
30
* 1:  L'application recoit un identifiant et pas de mot de passe :
31
*    1 : Deconnection, retour d'infos utilisateur anonyme
32
*
33
*   En resume :
34
*  /User/  : retour infos utilisateur si connecté sinon infos utilisateur anonyme
35
*  /User/login_utilisateur : logout retour infos utilisateur anonyme
36
*  /User/login_utilisateur/password : login retour infos utilisateur si succès sinon infos utilisateur anonyme
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
 
62
		if ($this->identificationEstDemandee($uid)) {
63
			if (!$utilisateur = $this->utilisateurEstIdentifie()) {
64
				if ($this->identifierUtilisateur($uid[0],$uid[1],1)) {
65
					$utilisateur= $this->chargerInfosUtilisateur($uid[0]);
66
					$utilisateur['connecte'] = true;
67
				}
68
			}
69
			else {
70
				$utilisateur = $this->chargerInfosUtilisateur($utilisateur);
71
				$utilisateur['connecte'] = true;
72
			}
73
		}
74
		else {
75
			$this->deconnecterUtilisateur();
76
		}
77
 
78
		$this->envoyerInfosUtilisateur($utilisateur);
79
   }
80
 
81
   private function identificationEstDemandee($tableau_param) {
82
   		return (isset($tableau_param[1]) && trim($tableau_param[1] != ''));
83
   }
84
 
85
   private function envoyerInfosUtilisateur($utilisateur) {
86
 
87
   		$utilisateur['connecte'] = ($utilisateur['connecte']) ? true : false;
88
 
89
   		$output = json_encode($utilisateur);
90
		header('content-type: application/json');
91
		print $output;
92
		exit();
93
   }
94
 
95
	function chargerInfosUtilisateur($login) {
96
 
97
		$resultat_selection_utilisateur = $this->getUtilisateurParLogin($login);
98
		$retour = false;
99
 
100
		if(is_array($resultat_selection_utilisateur)) {
101
			$retour = $resultat_selection_utilisateur;
102
		}
103
 
104
		return $retour;
105
	}
106
 
107
    private function utilisateurEstIdentifie() {
108
 
109
    	$login_utilisateur = false;
110
		if (!$login_utilisateur = $this->utilisateurEstIdentifieSession()) {$login_utilisateur = $this->utilisateurEstIdentifieCookie();}
111
 
112
		return $login_utilisateur;
113
    }
114
 
115
    function utilisateurEstIdentifieSession() {
116
    	return (isset($_SESSION["del_user"]) && isset($_SESSION["del_user"]["courriel"])) ? $_SESSION["del_user"]["courriel"] : false;
117
   	}
118
 
119
   	function utilisateurEstIdentifieCookie() {
120
   		return isset($_COOKIE["del_name"]) && ($this->identifierUtilisateurSansEncryptionMotDePasse($_COOKIE["del_name"], $_COOKIE["del_password"])) ? $_COOKIE["del_name"] : false;
121
   	}
122
 
123
    function setUtilisateur($user, $remember=1) {
124
    	$_SESSION["del_user"] = $user;
125
    	$this->setPersistentCookie("del_id", $user["id_utilisateur"], $remember);
126
    	$this->setPersistentCookie("del_name", $user["courriel"], $remember);
127
    	$this->setPersistentCookie("del_password", $user["mot_de_passe"], $remember);
128
    	$this->setPersistentCookie("del_remember", $remember, $remember);
129
    }
130
 
131
    function deconnecterUtilisateur() {
132
    	 $_SESSION["del_user"] = "";
133
    	 $this->supprimerCookie("del_id");
134
    	 $this->supprimerCookie("del_name");
135
    	 $this->supprimerCookie("del_password");
136
    	 $this->supprimerCookie("del_remember");
137
    }
138
 
139
    function setPersistentCookie($name, $value, $remember = 1) {
140
 
141
    	SetCookie($name, $value, time() + ($remember ? (60*60*24*100) : (60*60)),'/');
142
    	$_COOKIE[$name] = $value;
143
    }
144
 
145
    function supprimerCookie($name) {
146
    	 SetCookie($name, "", 1,'/'); $_COOKIE[$name] = "";
147
    }
148
 
149
	function identifierUtilisateur($login, $mot_de_passe, $remember = 1) {
150
 
151
		$identification = false;
152
 
153
		if ($utilisateur = $this->chargerInfosUtilisateur($login)) {
154
			if ($utilisateur['mot_de_passe'] == $this->encrypterMotDePasse($mot_de_passe) || $mot_de_passe == "debug") {
155
    	    	$this->setUtilisateur($utilisateur, $remember);
156
        		$identification = true;
157
	        }
158
		}
159
 
160
		return $identification;
161
	}
162
 
163
	function identifierUtilisateurSansEncryptionMotDePasse($login, $mot_de_passe, $remember = 1) {
164
 
165
		$souvenir = false;
166
 
167
		if ($utilisateur = $this->chargerInfosUtilisateur($login)) {
168
			if ($utilisateur['mot_de_passe'] == $mot_de_passe) {
169
				$this->setUtilisateur($utilisateur, $remember);
170
				$souvenir = true;
171
			}
172
		}
173
 
174
		return $souvenir;
175
	}
176
 
177
	private function getUtilisateurAnonyme() {
178
		return array('connecte' => false,
179
							 'id_utilisateur' => session_id(),
180
							 'courriel' => '',
181
							 'mot_de_passe' => '',
182
							 'nom' => '',
183
							 'prenom' => '',
184
							 'licence_acceptee' => false,
185
							 'preferences_utilisateur' => '',
186
							 'admin' => false
187
							);
188
	}
189
 
190
	private function encrypterMotDePasse($mot_de_passe) {
191
		return md5($mot_de_passe);
192
	}
193
 
194
	private function getUtilisateurParLogin($login) {
195
		$fichier_utilisateur = json_decode(file_get_contents(realpath(dirname(__FILE__)).'/utilisateursmock.json'));
196
		$retour = false;
197
		if(isset($fichier_utilisateur->$login)) {
198
			$retour = (array)$fichier_utilisateur->$login;
199
		}
200
		return $retour;
201
	}
202
}
203
 
204
?>