| 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 | ?>
 |