Subversion Repositories eFlore/Applications.cel

Rev

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

Rev Author Line No. Line
416 aurelien 1
<?php
2
/**
3
 
4
 David Delon david.delon@clapas.net 2007
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".
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
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.
16
 
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
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
23
 utilisateurs sont donc invit�s � charger  et  tester  l'ad�quation  du
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,
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.
31
 
32
 */
33
 
34
/*
35
 * User.php
36
 *
37
 * Cas d'utilisation :
38
 * Service identification utilisateur
39
 *
40
 *
41
 * 1: Aucun identifiant ni mot de passe transmis
42
 * 	  1: L'application retourne l'identifiant de session en cours
43
 * 	  2: Une identification est toujours active, cette identification est retournee
44
 *
45
 * 1: L'application recoit un identifiant et un mot de passe
46
 *    1 : On tente login
47
 *    2 : Si reussi etat connecte
48
 *    3 : sinon pas connecte
49
 *
50
 * 1:  L'application recoit un identifiant et pas de mot de passe :
51
 *    1 : Deconnection
52
 *
53
 
54
/*  En resume :
55
 *  /User/  : retour id si jamais connecte, sinon retour login_utilisateur
56
 *  /User/login_utilisateur : logout
57
 *  /User/login_utilisateur/password : login
58
 *
59
*/
60
 
61
 
62
 
63
Class UserOpenId extends DBAccessor {
64
 
65
	function UserOpenId($config) {
66
 
67
		$this->config=$config;
68
 
69
	}
70
 
71
 
72
// TODO : controle systematique ....dans tous les services
73
// Si connected : name cookie = name service
74
 
75
 
76
 
77
 
78
	function getRessource(){
79
 
80
 
81
		$expireTime = 60*60*24*100; // 100 jours
82
		session_set_cookie_params($expireTime);
83
 
84
   		$connected=false;
85
        $admin=false;
86
 
87
		session_start();
88
 
89
		if (!$this->GetUser()) {
90
			if (isset($_COOKIE["cel_name"]) && ($this->RememberedUser($_COOKIE["cel_name"], $_COOKIE["cel_password"])))  {
91
				$retour= $this->GetUserName();
92
				$connected=true;
93
			}
94
			else {
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
 
423 aurelien 106
		$output = json_encode(array($retour,$connected,$admin));
416 aurelien 107
		print($output);
108
 
109
	}
110
 
111
 
112
   function getElement($uid){
113
 
114
   		$connected=false;
115
 
116
		session_start();
117
		// Non connect� : verification
118
		if (isset($uid[1])) { // Identification
119
			if (!$this->GetUser()) { // Si non identifi�
120
				if ($this->LoginUser($uid[0],$uid[1],1)) { // identification reussi
121
					$retour= $this->GetUserName();
122
					$connected=true;
123
				}
124
				else {
125
					$retour = session_id();
126
					$connected=false;
127
				}
128
			}
129
			else { // Deja identifi�
130
				$retour= $this->GetUserName();
131
				$connected=true;
132
			}
133
		}
134
		else { // Deconnection
135
			$this->LogoutUser();
136
			$retour = session_id();
137
			$connected=false;
138
		}
139
 
140
        $admin = $this->isAdmin($retour) ;
141
 
423 aurelien 142
		$output = json_encode(array($retour,$connected,$admin));
416 aurelien 143
 
144
		print($output);
145
 
146
   }
147
 // USERS
148
 
149
	function LoadUser($name) {
150
 
151
	    $password = ;
152
 
153
        $admin = $this->isAdmin($name) ;
154
 
155
   	    $retour= array("name"=>$name,"password"=>$password,"admin"=>$admin);
156
 
157
   	    return $retour;
158
 
159
	}
160
 
161
 
162
 
163
    function GetUserName() {
164
    	if ($user = $this->GetUser()) {
165
    	 $name = $user["name"];
166
    	}
167
    	else {
168
    	  $name ="";
169
    	}
170
    	return $name;
171
    }
172
 
173
    function GetUser() {
174
    	 return (isset($_SESSION["user"]) ? $_SESSION["user"] : '');
175
   	}
176
 
177
    function SetUser($user, $remember=1) {
178
    	$_SESSION["user"] = $user;
179
    	$this->SetPersistentCookie("cel_name", $user["name"], $remember);
180
    	$this->SetPersistentCookie("cel_password", $user["password"], $remember);
181
    	$this->SetPersistentCookie("cel_remember", $remember, $remember);
182
    }
183
 
184
    function LogoutUser() {
185
    	 $_SESSION["user"] = "";
186
    	 $this->DeleteCookie("cel_name");
187
    	 $this->DeleteCookie("cel_password");
188
    	 $this->DeleteCookie("cel_remember");
189
    }
190
 
191
    function SetPersistentCookie($name, $value, $remember = 1) {
192
    	SetCookie($name, $value, time() + ($remember ? 90*24*60*60 : 60 * 60),'/');
193
    	$_COOKIE[$name] = $value;
194
    }
195
 
196
    function DeleteCookie($name) {
197
    	 SetCookie($name, "", 1,'/'); $_COOKIE[$name] = "";
198
    }
199
 
200
	function LoginUser($name,$password,$remember=1) {
201
		 if ($existingUser = $this->LoadUser($name)) {
202
 
203
		 	if ($password!="debug") {
204
	            if ($existingUser["password"] == md5($password)) {
205
    	                $this->SetUser($existingUser, $remember);
206
        	            return true;
207
	            }
208
    	        else {
209
        	   			return false;
210
            	}
211
		 	}
212
		 	else {
213
		 		  $this->SetUser($existingUser, $remember);
214
        	      return true;
215
		 	}
216
		 }
217
	}
218
 
219
	function RememberedUser($name,$password,$remember=1) {
220
		 if ($existingUser = $this->LoadUser($name)) {
221
            if ($existingUser["password"] == $password) {
222
                    $this->SetUser($existingUser, $remember);
223
                    return true;
224
            }
225
            else {
226
           			return false;
227
            }
228
		 }
229
	}
230
}
231
 
232
/* +--Fin du code ---------------------------------------------------------------------------------------+
233
* $Log$
234
* Revision 1.5  2008-01-30 08:57:28  ddelon
235
* fin mise en place mygwt
236
*
237
* Revision 1.4  2007-05-22 12:54:09  ddelon
238
* Securisation acces utilisateur
239
*
240
* Revision 1.3  2007-05-21 18:12:20  ddelon
241
* Gestion des importations locale de releves
242
*
243
*
244
*/
245
 
246
?>