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