Subversion Repositories eFlore/Applications.cel

Rev

Rev 763 | Rev 936 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 763 Rev 933
Line 1... Line 1...
1
<?php
1
<?php
-
 
2
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel //
2
/**
3
/**
3
 
-
 
4
 David Delon david.delon@clapas.net 2007
4
* PHP Version 5
5
 
5
*
6
 Ce logiciel est r�gi par la licence CeCILL soumise au droit fran�ais et
-
 
7
 respectant les principes de diffusion des logiciels libres. Vous pouvez
-
 
8
 utiliser, modifier et/ou redistribuer ce programme sous les conditions
-
 
9
 de la licence CeCILL telle que diffus�e par le CEA, le CNRS et l'INRIA
-
 
10
 sur le site "http://www.cecill.info".
6
* @category  PHP
11
 En contrepartie de l'accessibilit� au code source et des droits de copie,
7
* @package   jrest
12
 de modification et de redistribution accord�s par cette licence, il n'est
-
 
13
 offert aux utilisateurs qu'une garantie limit�e.  Pour les m�mes raisons,
-
 
14
 seule une responsabilit� restreinte p�se sur l'auteur du programme,  le
-
 
15
 titulaire des droits patrimoniaux et les conc�dants successifs.
8
* @author    David Delon <devid.delon@clapas.net>
16
 
-
 
17
 A cet �gard  l'attention de l'utilisateur est attir�e sur les risques
9
* @author    Aurélien Peronnet <devid.delon@clapas.net>
18
 associ�s au chargement,  � l'utilisation,  � la modification et/ou au
10
* @copyright 2010 Tela-Botanica
19
 d�veloppement et � la reproduction du logiciel par l'utilisateur �tant
-
 
20
 donn� sa sp�cificit� de logiciel libre, qui peut le rendre complexe �
-
 
21
 manipuler et qui le r�serve donc � des d�veloppeurs et des professionnels
-
 
22
 avertis poss�dant  des  connaissances  informatiques approfondies.  Les
11
* @license   http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
23
 utilisateurs sont donc invit�s � charger  et  tester  l'ad�quation  du
-
 
24
 logiciel � leurs besoins dans des conditions permettant d'assurer la
12
* @version   SVN: <svn_id>
25
 s�curit� de leurs syst�mes et ou de leurs donn�es et, plus g�n�ralement,
-
 
26
 � l'utiliser et l'exploiter dans les m�mes conditions de s�curit�.
-
 
27
 
-
 
28
 Le fait que vous puissiez acc�der � cet en-t�te signifie que vous avez
-
 
29
 pris connaissance de la licence CeCILL, et que vous en avez accept� les
-
 
30
 termes.
13
* @link      /doc/jrest/
31
 
-
 
32
 */
14
*/
Line 33... Line 15...
33
 
15
 
34
/*
16
/**
35
 * User.php
17
* User.php
36
 *
18
*
37
 * Cas d'utilisation :
19
* Cas d'utilisation :
38
 * Service identification utilisateur
20
* Service identification utilisateur
Line 42... Line 24...
42
 * 	  1: L'application retourne l'identifiant de session en cours
24
* 	  1: L'application retourne l'identifiant de session en cours
43
 * 	  2: Une identification est toujours active, cette identification est retournee
25
* 	  2: Une identification est toujours active, cette identification est retournee
44
 *
26
*
45
 * 1: L'application recoit un identifiant et un mot de passe
27
* 1: L'application recoit un identifiant et un mot de passe
46
 *    1 : On tente login
28
*    1 : On tente login
47
 *    2 : Si reussi etat connecte
29
*    2 : Si reussi etat connecte, retour de l'identification obtenue
48
 *    3 : sinon pas connecte
30
*    3 : sinon pas connecte, retour d'infos utilisateur anonyme
49
 *
31
*
50
 * 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 :
51
 *    1 : Deconnection
33
*    1 : Deconnection, retour d'infos utilisateur anonyme
52
 *
34
*
53
 
-
 
54
/*  En resume :
35
*   En resume :
55
 *  /User/  : retour id si jamais connecte, sinon retour login_utilisateur
36
*  /User/  : retour infos utilisateur si connecté sinon infos utilisateur anonyme
56
 *  /User/login_utilisateur : logout
37
*  /User/login_utilisateur : logout retour infos utilisateur anonyme
57
 *  /User/login_utilisateur/password : login
38
*  /User/login_utilisateur/password : login retour infos utilisateur si succès sinon infos utilisateur anonyme
58
 *
39
*
59
*/
40
*/
60
 
-
 
61
 
-
 
62
 
-
 
63
Class User  extends DBAccessor {
41
class User extends Cel {
64
 
-
 
65
	function User($config) {
-
 
66
 
-
 
67
		$this->config=$config;
-
 
68
 
-
 
69
	}
-
 
70
 
-
 
Line 71... Line 42...
71
 
42
 
72
// TODO : controle systematique ....dans tous les services
43
	// TODO : controle systematique ....dans tous les services
73
// Si connected : name cookie = name service
-
 
74
 
-
 
75
 
-
 
76
 
-
 
77
 
44
	// Si connected : name cookie = name service
Line 78... Line 45...
78
	function getRessource(){
45
	function getRessource(){
79
 
46
 
80
		$expireTime = 60*60*24*100; // 100 jours
-
 
81
		session_set_cookie_params($expireTime);
-
 
82
 
-
 
83
   		$connected=false;
-
 
84
        $admin=false;
47
		$temps_expiration = 60*60*24*100; // 100 jours
Line -... Line 48...
-
 
48
		session_set_cookie_params($temps_expiration);
-
 
49
		session_start();
-
 
50
		
85
 
51
		$utilisateur = array('connecte' => false,
-
 
52
							 'id_utilisateur' => session_id(),
-
 
53
							 'courriel' => '',
-
 
54
							 'mot_de_passe' => '',
-
 
55
							 'nom' => '',
-
 
56
							 'prenom' => '',
86
		session_start();
57
							 'licence_acceptee' => '0',
87
		
-
 
88
		if (!$this->GetUser()) {
58
							 'preferences_utilisateur' => ''
89
			
-
 
90
			if (isset($_COOKIE["cel_name"]) && ($this->RememberedUser($_COOKIE["cel_name"], $_COOKIE["cel_password"])))  {
59
							);
91
				$retour= $this->GetUserName();
60
		
92
				$connected=true;
61
		$login_utilisateur = $this->utilisateurEstIdentifie();
93
			}
62
		
94
			else {
63
		if ($login_utilisateur) {
95
				$retour = session_id();
-
 
96
				$connected=false;
-
 
97
			}
-
 
98
		}
-
 
99
		else {
-
 
100
			$retour= $this->GetUserName();
-
 
101
			$connected=true;
-
 
102
		}
-
 
103
 
-
 
104
        $admin = $this->isAdmin($retour) ;
-
 
105
        $licence_acceptee = $this->isLicenceAccepted($retour);
-
 
106
 
-
 
Line -... Line 64...
-
 
64
			$utilisateur = $this->chargerInfosUtilisateur($login_utilisateur);
107
		$output = json_encode(array($retour,$connected,$admin,$licence_acceptee));
65
			$utilisateur['connecte'] = true;
Line 108... Line -...
108
		
-
 
109
		print($output);
66
		}
Line 110... Line -...
110
 
-
 
111
	}
-
 
112
 
67
 
113
 
68
		$this->envoyerInfosUtilisateur($utilisateur);
114
   function getElement($uid){
69
	}
115
 
70
 
116
   		$connected=false;
71
   function getElement($uid){
117
 
72
 
118
		session_start();
73
		session_start();	
-
 
74
		$utilisateur = array('connecte' => false,
-
 
75
							 'id_utilisateur' => session_id(),
119
		// Non connecté : verification
76
							 'courriel' => '',
-
 
77
							 'mot_de_passe' => '',
120
		if (isset($uid[1])) { // Identification
78
							 'nom' => '',
-
 
79
							 'prenom' => '',
-
 
80
							 'licence_acceptee' => '0',
121
			if (!$this->GetUser()) { // Si non identifié
81
							 'preferences_utilisateur' => ''
122
				if ($this->LoginUser($uid[0],$uid[1],1)) { // identification reussie
82
							);
123
					$retour= $this->GetUserName();
83
							
124
					$connected=true;
84
		if ($this->identificationEstDemandee($uid)) { 	
125
				}
85
			if (!$utilisateur = $this->utilisateurEstIdentifie()) { 
126
				else {
86
				if ($this->IdentifierUtilisateur($uid[0],$uid[1],1)) { 
127
					$retour = session_id();
87
					$utilisateur= $this->chargerInfosUtilisateur($uid[0]);
128
					$connected=false;
88
					$utilisateur['connecte'] = true;
129
				}
89
				}
130
			}
90
			}
131
			else { // Deja identifié
91
			else {
132
				$retour= $this->GetUserName();
-
 
133
				$connected=true;
-
 
134
			}
92
				$utilisateur = $this->chargerInfosUtilisateur($utilisateur);
Line 135... Line 93...
135
		}
93
				$utilisateur['connecte'] = true;
136
		else { // Deconnection
94
			}
137
			$this->LogoutUser();
-
 
Line 138... Line 95...
138
			$retour = session_id();
95
		}
-
 
96
		else {
-
 
97
			$this->DeconnecterUtilisateur();
Line 139... Line 98...
139
			$connected=false;
98
		}
Line -... Line 99...
-
 
99
 
-
 
100
		$this->envoyerInfosUtilisateur($utilisateur);
-
 
101
   }
-
 
102
   
140
		}
103
   private function identificationEstDemandee($tableau_param) {
141
 
-
 
142
        $admin = $this->isAdmin($retour) ;
-
 
143
        
-
 
Line 144... Line -...
144
        $licence_acceptee = $this->isLicenceAccepted($retour) ;
-
 
145
 
104
   		return (isset($tableau_param[1]) && trim($tableau_param[1] != ''));
Line -... Line 105...
-
 
105
   }
146
		$output = json_encode(array($retour,$connected,$admin,$licence_acceptee));
106
   
Line 147... Line -...
147
 
-
 
148
		print($output);
107
   private function envoyerInfosUtilisateur($utilisateur) {
149
 
108
   	   	
Line 150... Line 109...
150
   }
109
   		$output = json_encode($utilisateur);
151
 // USERS
110
		header('content-type: application/json');
152
 
111
		print $output;
Line 153... Line -...
153
	function LoadUser($name) {
-
 
154
 
-
 
155
		$DB=$this->connectDB($this->config,'database_ident');
-
 
156
    	$query="SELECT ".$this->config['database_ident']['ann_id']." as name, ".$this->config['database_ident']['ann_pwd']." as password FROM ".$this->config['database_ident']['annuaire']." WHERE ".$this->config['database_ident']['ann_id']." ='".$DB->escapeSimple($name)."'";
-
 
157
 
-
 
158
   	    $res =& $DB->query($query);
112
		exit();
159
 
-
 
160
	    if (DB::isError($res)) {
113
   }
Line -... Line 114...
-
 
114
   
Line -... Line 115...
-
 
115
	function chargerInfosUtilisateur($login) {
-
 
116
		
Line 161... Line -...
161
  	        die($res->getMessage());
-
 
162
       	}
-
 
163
 
117
		$requete_selection_utilisateur = 'SELECT * FROM cel_utilisateurs '.
164
	    while ($row =& $res->fetchrow(DB_FETCHMODE_ASSOC)) {
-
 
165
	    	$password=$row['password'];
-
 
166
   	    }
-
 
167
 
118
										'WHERE courriel = '.$this->proteger($login);
-
 
119
							 
168
        $admin = $this->isAdmin($name) ;
120
		$resultat_selection_utilisateur = $this->requeter($requete_selection_utilisateur);
-
 
121
		$retour = false;			
169
        $licence_acceptee = $this->isLicenceAccepted($name) ;
122
		
Line 170... Line 123...
170
 
123
		if(is_array($resultat_selection_utilisateur) && count($resultat_selection_utilisateur) > 0) {			
171
   	    $retour= array("name"=>$name,"password"=>$password,"admin"=>$admin,"licence_acceptee"=>$licence_acceptee);
124
			$retour = $resultat_selection_utilisateur[0];	
172
 
125
		}
Line 173... Line 126...
173
   	    return $retour;
126
		
174
 
127
		return $retour;
-
 
128
	}
175
	}
129
    
176
 
130
    private function utilisateurEstIdentifie() {
177
 
131
    	   	
178
 
132
    	$login_utilisateur = false;					
Line 179... Line 133...
179
    function GetUserName() {
133
		if (!$login_utilisateur = $this->utilisateurEstIdentifieSession()) {$login_utilisateur = $this->utilisateurEstIdentifieCookie();}
180
    	if ($user = $this->GetUser()) {
134
		
-
 
135
		return $login_utilisateur;
181
    	 $name = $user["name"];
136
    }
182
    	}
137
 
183
    	else {
138
    function utilisateurEstIdentifieSession() {
184
    	  $name ="";
139
    	return (isset($_SESSION["user"]) && isset($_SESSION["user"]["courriel"])) ? $_SESSION["user"]["courriel"] : false;
Line 185... Line 140...
185
    	}
140
   	}
186
    	return $name;
141
   	
187
    }
142
   	function utilisateurEstIdentifieCookie() {
188
 
143
   		return isset($_COOKIE["cel_name"]) && ($this->IdentifierUtilisateurSansEncryptionMotDePasse($_COOKIE["cel_name"], $_COOKIE["cel_password"])) ? $_COOKIE["cel_name"] : false;	
Line 189... Line 144...
189
    function GetUser() {
144
   	}
190
    	 return (isset($_SESSION["user"]) ? $_SESSION["user"] : '');
145
 
191
   	}
146
    function SetUtilisateur($user, $remember=1) {
Line 192... Line 147...
192
 
147
    	$_SESSION["user"] = $user;
193
    function SetUser($user, $remember=1) {
-
 
Line 194... Line -...
194
    	$_SESSION["user"] = $user;
-
 
195
    	$this->SetPersistentCookie("cel_name", $user["name"], $remember);
-
 
196
    	$this->SetPersistentCookie("cel_password", $user["password"], $remember);
-
 
197
    	$this->SetPersistentCookie("cel_remember", $remember, $remember);
-
 
198
    }
-
 
199
 
-
 
200
    function LogoutUser() {
148
    	$this->SetPersistentCookie("cel_id", $user["id"], $remember);
201
    	 $_SESSION["user"] = "";
-
 
202
    	 $this->DeleteCookie("cel_name");
-
 
203
    	 $this->DeleteCookie("cel_password");
-
 
204
    	 $this->DeleteCookie("cel_remember");
-
 
205
    }
-
 
206
 
-
 
207
    function SetPersistentCookie($name, $value, $remember = 1) {
-
 
208
    	SetCookie($name, $value, time() + ($remember ? 90*24*60*60 : 60 * 60),'/');
-
 
Line 209... Line -...
209
    	$_COOKIE[$name] = $value;
-
 
210
    }
149
    	$this->SetPersistentCookie("cel_name", $user["name"], $remember);
211
 
150
    	$this->SetPersistentCookie("cel_password", $user["password"], $remember);
212
    function DeleteCookie($name) {
151
    	$this->SetPersistentCookie("cel_remember", $remember, $remember);
213
    	 SetCookie($name, "", 1,'/'); $_COOKIE[$name] = "";
152
    }
214
    }
-
 
215
 
-
 
216
	function LoginUser($name,$password,$remember=1) {
-
 
217
		 if ($existingUser = $this->LoadUser($name)) {
153
 
218
 
154
    function DeconnecterUtilisateur() {
-
 
155
    	 $_SESSION["user"] = "";
-
 
156
    	 $this->SupprimerCookie("cel_id");
219
		 	if ($password!="debug") {
157
    	 $this->SupprimerCookie("cel_name");
Line 220... Line 158...
220
	            if ($existingUser["password"] == md5($password)) {
158
    	 $this->SupprimerCookie("cel_password");
Line 221... Line 159...
221
    	                $this->SetUser($existingUser, $remember);
159
    	 $this->SupprimerCookie("cel_remember");
Line 222... Line 160...
222
        	            return true;
160
    }
-
 
161
 
-
 
162
    function SetPersistentCookie($name, $value, $remember = 1) {
223
	            }
163
    	SetCookie($name, $value, time() + ($remember ? 90*24*60*60 : 60 * 60),'/');
-
 
164
    	$_COOKIE[$name] = $value;
224
    	        else {
165
    }
Line 225... Line -...
225
        	   			return false;
-
 
226
            	}
166
 
227
		 	}
167
    function SupprimerCookie($name) {
Line -... Line 168...
-
 
168
    	 SetCookie($name, "", 1,'/'); $_COOKIE[$name] = "";
228
		 	else {
169
    }
229
		 		  $this->SetUser($existingUser, $remember);
170
 
230
        	      return true;
171
	function IdentifierUtilisateur($login, $mot_de_passe, $remember = 1) {
Line 231... Line 172...
231
		 	}
172
		
232
		 }
173
		$identification = false;
Line 271... Line 212...
271
* Revision 1.3  2007-05-21 18:12:20  ddelon
212
* Revision 1.3  2007-05-21 18:12:20  ddelon
272
* Gestion des importations locale de releves
213
* Gestion des importations locale de releves
273
*
214
*
274
*
215
*
275
*/
216
*/
276
 
-
 
277
?>
217
?>