Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 1080 Rev 1088
1
<?php
1
<?php
2
/**
2
/**
3
 
3
 
4
 David Delon david.delon@clapas.net 2007
4
 David Delon david.delon@clapas.net 2007
5
 
5
 
6
 Ce logiciel est r�gi par la licence CeCILL soumise au droit fran�ais et
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
7
 respectant les principes de diffusion des logiciels libres. Vous pouvez
8
 utiliser, modifier et/ou redistribuer ce programme sous les conditions
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
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".
10
 sur le site "http://www.cecill.info".
11
 En contrepartie de l'accessibilit� au code source et des droits de copie,
11
 En contrepartie de l'accessibilit� au code source et des droits de copie,
12
 de modification et de redistribution accord�s par cette licence, il n'est
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,
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
14
 seule une responsabilit� restreinte p�se sur l'auteur du programme,  le
15
 titulaire des droits patrimoniaux et les conc�dants successifs.
15
 titulaire des droits patrimoniaux et les conc�dants successifs.
16
 
16
 
17
 A cet �gard  l'attention de l'utilisateur est attir�e sur les risques
17
 A cet �gard  l'attention de l'utilisateur est attir�e sur les risques
18
 associ�s au chargement,  � l'utilisation,  � la modification et/ou au
18
 associ�s au chargement,  � l'utilisation,  � la modification et/ou au
19
 d�veloppement et � la reproduction du logiciel par l'utilisateur �tant
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 �
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
21
 manipuler et qui le r�serve donc � des d�veloppeurs et des professionnels
22
 avertis poss�dant  des  connaissances  informatiques approfondies.  Les
22
 avertis poss�dant  des  connaissances  informatiques approfondies.  Les
23
 utilisateurs sont donc invit�s � charger  et  tester  l'ad�quation  du
23
 utilisateurs sont donc invit�s � charger  et  tester  l'ad�quation  du
24
 logiciel � leurs besoins dans des conditions permettant d'assurer la
24
 logiciel � leurs besoins dans des conditions permettant d'assurer la
25
 s�curit� de leurs syst�mes et ou de leurs donn�es et, plus g�n�ralement,
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�.
26
 � l'utiliser et l'exploiter dans les m�mes conditions de s�curit�.
27
 
27
 
28
 Le fait que vous puissiez acc�der � cet en-t�te signifie que vous avez
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
29
 pris connaissance de la licence CeCILL, et que vous en avez accept� les
30
 termes.
30
 termes.
31
 
31
 
32
 */
32
 */
33
 
33
 
34
/*
34
/*
35
 * User.php
35
 * User.php
36
 *
36
 *
37
 * Cas d'utilisation :
37
 * Cas d'utilisation :
38
 * Service identification utilisateur
38
 * Service identification utilisateur
39
 *
39
 *
40
 *
40
 *
41
 * 1: Aucun identifiant ni mot de passe transmis
41
 * 1: Aucun identifiant ni mot de passe transmis
42
 * 	  1: L'application retourne l'identifiant de session en cours
42
 * 	  1: L'application retourne l'identifiant de session en cours
43
 * 	  2: Une identification est toujours active, cette identification est retournee
43
 * 	  2: Une identification est toujours active, cette identification est retournee
44
 *
44
 *
45
 * 1: L'application recoit un identifiant et un mot de passe
45
 * 1: L'application recoit un identifiant et un mot de passe
46
 *    1 : On tente login
46
 *    1 : On tente login
47
 *    2 : Si reussi etat connecte
47
 *    2 : Si reussi etat connecte
48
 *    3 : sinon pas connecte
48
 *    3 : sinon pas connecte
49
 *
49
 *
50
 * 1:  L'application recoit un identifiant et pas de mot de passe :
50
 * 1:  L'application recoit un identifiant et pas de mot de passe :
51
 *    1 : Deconnection
51
 *    1 : Deconnection
52
 *
52
 *
53
 
53
 
54
/*  En resume :
54
/*  En resume :
55
 *  /User/  : retour id si jamais connecte, sinon retour login_utilisateur
55
 *  /User/  : retour id si jamais connecte, sinon retour login_utilisateur
56
 *  /User/login_utilisateur : logout
56
 *  /User/login_utilisateur : logout
57
 *  /User/login_utilisateur/password : login
57
 *  /User/login_utilisateur/password : login
58
 *
58
 *
59
*/
59
*/
60
 
60
 
61
 
61
 
62
 
62
 
63
Class User  extends DBAccessor {
63
Class User  extends DBAccessor {
64
 
64
 
65
	function User($config) {
65
	function User($config) {
66
 
66
 
67
		$this->config=$config;
67
		$this->config=$config;
68
 
68
 
69
	}
69
	}
70
 
70
 
71
 
71
 
72
// TODO : controle systematique ....dans tous les services
72
// TODO : controle systematique ....dans tous les services
73
// Si connected : name cookie = name service
73
// Si connected : name cookie = name service
74
 
74
 
75
 
75
 
76
 
76
 
77
 
77
 
78
	function getRessource(){
78
	function getRessource(){
79
 
79
 
80
		$expireTime = 60*60*24*100; // 100 jours
80
		$expireTime = 60*60*24*100; // 100 jours
81
		session_set_cookie_params($expireTime);
81
		session_set_cookie_params($expireTime);
82
 
82
 
83
   		$connected=false;
83
   		$connected=false;
84
        $admin=false;
84
        $admin=false;
85
 
85
 
86
		if(!isset($_SESSION)) {session_start();}
86
		if(!isset($_SESSION)) {session_start();}
87
		
87
		
88
		if (!$this->GetUser()) {
88
		if (!$this->GetUser()) {
89
			
89
			
90
			if (isset($_COOKIE["cel_name"]) && ($this->RememberedUser($_COOKIE["cel_name"], $_COOKIE["cel_password"])))  {
90
			if (isset($_COOKIE["cel_name"]) && ($this->RememberedUser($_COOKIE["cel_name"], $_COOKIE["cel_password"])))  {
91
				$retour= $this->GetUserName();
91
				$retour= $this->GetUserName();
92
				$connected=true;
92
				$connected=true;
93
			}
93
			}
94
			else {
94
			else {
95
				$retour = session_id();
95
				$retour = session_id();
96
				$connected=false;
96
				$connected=false;
97
			}
97
			}
98
		}
98
		}
99
		else {
99
		else {
100
			$retour= $this->GetUserName();
100
			$retour= $this->GetUserName();
101
			$connected=true;
101
			$connected=true;
102
		}
102
		}
103
 
103
 
104
        $admin = $this->isAdmin($retour) ;
104
        $admin = $this->isAdmin($retour) ;
105
        $licence_acceptee = $this->isLicenceAccepted($retour);
105
        $licence_acceptee = $this->isLicenceAccepted($retour);
106
 
106
 
107
		$output = json_encode(array($retour,$connected,$admin,$licence_acceptee));
107
		$output = json_encode(array($retour,$connected,$admin,$licence_acceptee));
108
		
108
		
109
		print($output);
109
		print($output);
110
 
110
 
111
	}
111
	}
112
 
112
 
113
 
113
 
114
   function getElement($uid){
114
   function getElement($uid){
115
 
115
 
116
   		$connected=false;
116
   		$connected=false;
117
 
117
 
118
   		if(!isset($_SESSION)) {session_start();}
118
   		if(!isset($_SESSION)) {session_start();}
119
		// Non connecté : verification
119
		// Non connecté : verification
120
		if (isset($uid[1])) { // Identification
120
		if (isset($uid[1])) { // Identification
121
			if (!$this->GetUser()) { // Si non identifié
121
			if (!$this->GetUser()) { // Si non identifié
122
				if ($this->LoginUser($uid[0],$uid[1],1)) { // identification reussie
122
				if ($this->LoginUser($uid[0],$uid[1],1)) { // identification reussie
123
					$retour= $this->GetUserName();
123
					$retour= $this->GetUserName();
124
					$connected=true;
124
					$connected=true;
125
				}
125
				}
126
				else {
126
				else {
127
					$retour = session_id();
127
					$retour = session_id();
128
					$connected=false;
128
					$connected=false;
129
				}
129
				}
130
			}
130
			}
131
			else { // Deja identifié
131
			else { // Deja identifié
132
				$retour= $this->GetUserName();
132
				$retour= $this->GetUserName();
133
				$connected=true;
133
				$connected=true;
134
			}
134
			}
135
		}
135
		}
136
		else { // Deconnection
136
		else { // Deconnection
137
			$this->LogoutUser();
137
			$this->LogoutUser();
138
			$retour = session_id();
138
			$retour = session_id();
139
			$connected=false;
139
			$connected=false;
140
		}
140
		}
141
 
141
 
142
        $admin = $this->isAdmin($retour) ;
142
        $admin = $this->isAdmin($retour) ;
143
        
143
        
144
        $licence_acceptee = $this->isLicenceAccepted($retour) ;
144
        $licence_acceptee = $this->isLicenceAccepted($retour) ;
145
 
145
 
146
		$output = json_encode(array($retour,$connected,$admin,$licence_acceptee));
146
		$output = json_encode(array($retour,$connected,$admin,$licence_acceptee));
147
 
147
 
148
		print($output);
148
		print($output);
149
 
149
 
150
   }
150
   }
151
 // USERS
151
 // USERS
152
 
152
 
153
	function LoadUser($name) {
153
	function LoadUser($name) {
154
 
154
 
155
		$DB=$this->connectDB($this->config,'database_ident');
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)."'";
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
 
157
 
158
   	    $res =& $DB->query($query);
158
   	    $res =& $DB->query($query);
159
 
159
 
160
	    if (DB::isError($res)) {
160
	    if (DB::isError($res)) {
161
  	        die($res->getMessage());
161
  	        die($res->getMessage());
162
       	}
162
       	}
163
 
163
 
164
	    while ($row =& $res->fetchrow(DB_FETCHMODE_ASSOC)) {
164
	    while ($row =& $res->fetchrow(DB_FETCHMODE_ASSOC)) {
165
	    	$password=$row['password'];
165
	    	$password=$row['password'];
166
   	    }
166
   	    }
167
 
167
 
168
        $admin = $this->isAdmin($name) ;
168
        $admin = $this->isAdmin($name) ;
169
        $licence_acceptee = $this->isLicenceAccepted($name) ;
169
        $licence_acceptee = $this->isLicenceAccepted($name) ;
170
 
170
 
171
   	    $retour= array("name"=>$name,"password"=>$password,"admin"=>$admin,"licence_acceptee"=>$licence_acceptee);
171
   	    $retour= array("name"=>$name,"password"=>$password,"admin"=>$admin,"licence_acceptee"=>$licence_acceptee);
172
 
172
 
173
   	    return $retour;
173
   	    return $retour;
174
 
174
 
175
	}
175
	}
176
 
176
 
177
 
177
 
178
 
178
 
179
    function GetUserName() {
179
    function GetUserName() {
180
    	if ($user = $this->GetUser()) {
180
    	if ($user = $this->GetUser()) {
181
    	 $name = $user["name"];
181
    	 $name = $user["name"];
182
    	}
182
    	}
183
    	else {
183
    	else {
184
    	  $name ="";
184
    	  $name ="";
185
    	}
185
    	}
186
    	return $name;
186
    	return $name;
187
    }
187
    }
188
 
188
 
189
    function GetUser() {
189
    function GetUser() {
190
    	 return (isset($_SESSION["user"]) ? $_SESSION["user"] : '');
190
    	 return (isset($_SESSION["user"]) ? $_SESSION["user"] : '');
191
   	}
191
   	}
192
 
192
 
193
    function SetUser($user, $remember=1) {
193
    function SetUser($user, $remember=1) {
194
    	$_SESSION["user"] = $user;
194
    	$_SESSION["user"] = $user;
195
    	$this->SetPersistentCookie("cel_name", $user["name"], $remember);
195
    	$this->SetPersistentCookie("cel_name", $user["name"], $remember);
196
    	$this->SetPersistentCookie("cel_password", $user["password"], $remember);
196
    	$this->SetPersistentCookie("cel_password", $user["password"], $remember);
197
    	$this->SetPersistentCookie("cel_remember", $remember, $remember);
197
    	$this->SetPersistentCookie("cel_remember", $remember, $remember);
198
    }
198
    }
199
 
199
 
200
    function LogoutUser() {
200
    function LogoutUser() {
201
    	 $_SESSION["user"] = "";
201
    	 $_SESSION["user"] = "";
202
    	 $this->DeleteCookie("cel_name");
202
    	 $this->DeleteCookie("cel_name");
203
    	 $this->DeleteCookie("cel_password");
203
    	 $this->DeleteCookie("cel_password");
204
    	 $this->DeleteCookie("cel_remember");
204
    	 $this->DeleteCookie("cel_remember");
205
    }
205
    }
206
 
206
 
207
    function SetPersistentCookie($name, $value, $remember = 1) {
207
    function SetPersistentCookie($name, $value, $remember = 1) {
208
    	SetCookie($name, $value, time() + ($remember ? 90*24*60*60 : 60 * 60),'/');
208
    	SetCookie($name, $value, time() + ($remember ? 90*24*60*60 : 60 * 60),'/');
209
    	$_COOKIE[$name] = $value;
209
    	$_COOKIE[$name] = $value;
210
    }
210
    }
211
 
211
 
212
    function DeleteCookie($name) {
212
    function DeleteCookie($name) {
213
    	 SetCookie($name, "", 1,'/'); $_COOKIE[$name] = "";
213
    	 SetCookie($name, "", 1,'/'); $_COOKIE[$name] = "";
214
    }
214
    }
215
 
215
 
216
	function LoginUser($name,$password,$remember=1) {
216
	function LoginUser($name,$password,$remember=1) {
217
		 if ($existingUser = $this->LoadUser($name)) {
217
		 if ($existingUser = $this->LoadUser($name)) {
218
 
218
 
219
		 	if ($password!="debug") {
219
		 	if ($password!="debug") {
220
	            if ($existingUser["password"] == md5($password)) {
220
	            if ($existingUser["password"] == md5($password)) {
221
    	                $this->SetUser($existingUser, $remember);
221
    	                $this->SetUser($existingUser, $remember);
222
        	            return true;
222
        	            return true;
223
	            }
223
	            }
224
    	        else {
224
    	        else {
225
        	   			return false;
225
        	   			return false;
226
            	}
226
            	}
227
		 	}
227
		 	}
228
		 	else {
228
		 	else {
229
		 		  $this->SetUser($existingUser, $remember);
229
		 		  $this->SetUser($existingUser, $remember);
230
        	      return true;
230
        	      return true;
231
		 	}
231
		 	}
232
		 }
232
		 }
233
	}
233
	}
234
 
234
 
235
	function RememberedUser($name,$password,$remember=1) {
235
	function RememberedUser($name,$password,$remember=1) {
236
		 if ($existingUser = $this->LoadUser($name)) {
236
		 if ($existingUser = $this->LoadUser($name)) {
237
            if ($existingUser["password"] == $password) {
237
            if ($existingUser["password"] == $password) {
238
                    $this->SetUser($existingUser, $remember);
238
                    $this->SetUser($existingUser, $remember);
239
                    return true;
239
                    return true;
240
            }
240
            }
241
            else {
241
            else {
242
           			return false;
242
           			return false;
243
            }
243
            }
244
		 }
244
		 }
245
	}
245
	}
246
	
246
	
247
	function isLicenceAccepted($utilisateur) {
247
	function isLicenceAccepted($utilisateur) {
248
		
248
		
249
		//print_r($_COOKIE);
249
		//print_r($_COOKIE);
250
		
250
		
251
		if($_COOKIE['cel_licence_'.md5($utilisateur)] == 1) {	
251
		if(isset($_COOKIE['cel_licence_'.md5($utilisateur)]) && $_COOKIE['cel_licence_'.md5($utilisateur)] == 1) {	
252
			return true;
252
			return true;
253
		}
253
		}
254
		
254
		
255
		if($_COOKIE['cel_licence_'.md5($utilisateur)] == true) {	
255
		if(isset($_COOKIE['cel_licence_'.md5($utilisateur)]) && $_COOKIE['cel_licence_'.md5($utilisateur)] == true) {	
256
			return true;
256
			return true;
257
		}
257
		}
258
		
258
		
259
		return false;
259
		return false;
260
	}
260
	}
261
}
261
}
262
 
262
 
263
/* +--Fin du code ---------------------------------------------------------------------------------------+
263
/* +--Fin du code ---------------------------------------------------------------------------------------+
264
* $Log$
264
* $Log$
265
* Revision 1.5  2008-01-30 08:57:28  ddelon
265
* Revision 1.5  2008-01-30 08:57:28  ddelon
266
* fin mise en place mygwt
266
* fin mise en place mygwt
267
*
267
*
268
* Revision 1.4  2007-05-22 12:54:09  ddelon
268
* Revision 1.4  2007-05-22 12:54:09  ddelon
269
* Securisation acces utilisateur
269
* Securisation acces utilisateur
270
*
270
*
271
* Revision 1.3  2007-05-21 18:12:20  ddelon
271
* Revision 1.3  2007-05-21 18:12:20  ddelon
272
* Gestion des importations locale de releves
272
* Gestion des importations locale de releves
273
*
273
*
274
*
274
*
275
*/
275
*/
276
 
276
 
277
?>
277
?>