<?php /** David Delon david.delon@clapas.net 2007 Ce logiciel est r�gi par la licence CeCILL soumise au droit fran�ais et respectant les principes de diffusion des logiciels libres. Vous pouvez utiliser, modifier et/ou redistribuer ce programme sous les conditions de la licence CeCILL telle que diffus�e par le CEA, le CNRS et l'INRIA sur le site "http://www.cecill.info". En contrepartie de l'accessibilit� au code source et des droits de copie, de modification et de redistribution accord�s par cette licence, il n'est offert aux utilisateurs qu'une garantie limit�e. Pour les m�mes raisons, seule une responsabilit� restreinte p�se sur l'auteur du programme, le titulaire des droits patrimoniaux et les conc�dants successifs. A cet �gard l'attention de l'utilisateur est attir�e sur les risques associ�s au chargement, � l'utilisation, � la modification et/ou au d�veloppement et � la reproduction du logiciel par l'utilisateur �tant donn� sa sp�cificit� de logiciel libre, qui peut le rendre complexe � manipuler et qui le r�serve donc � des d�veloppeurs et des professionnels avertis poss�dant des connaissances informatiques approfondies. Les utilisateurs sont donc invit�s � charger et tester l'ad�quation du logiciel � leurs besoins dans des conditions permettant d'assurer la s�curit� de leurs syst�mes et ou de leurs donn�es et, plus g�n�ralement, � l'utiliser et l'exploiter dans les m�mes conditions de s�curit�. Le fait que vous puissiez acc�der � cet en-t�te signifie que vous avez pris connaissance de la licence CeCILL, et que vous en avez accept� les termes. */ /* * User.php * * Cas d'utilisation : * Service identification utilisateur * * * 1: Aucun identifiant ni mot de passe transmis * 1: L'application retourne l'identifiant de session en cours * 2: Une identification est toujours active, cette identification est retournee * * 1: L'application recoit un identifiant et un mot de passe * 1 : On tente login * 2 : Si reussi etat connecte * 3 : sinon pas connecte * * 1: L'application recoit un identifiant et pas de mot de passe : * 1 : Deconnection * /* En resume : * /User/ : retour id si jamais connecte, sinon retour login_utilisateur * /User/login_utilisateur : logout * /User/login_utilisateur/password : login * */ Class User extends DBAccessor { function User($config) { $this->config=$config; } // TODO : controle systematique ....dans tous les services // Si connected : name cookie = name service function getRessource(){ $expireTime = 60*60*24*100; // 100 jours session_set_cookie_params($expireTime); $connected=false; $admin=false; session_start(); if (!$this->GetUser()) { if (isset($_COOKIE["cel_name"]) && ($this->RememberedUser($_COOKIE["cel_name"], $_COOKIE["cel_password"]))) { $retour= $this->GetUserName(); $connected=true; } else { $retour = session_id(); $connected=false; } } else { $retour= $this->GetUserName(); $connected=true; } $admin = $this->isAdmin($retour) ; $licence_acceptee = $this->isLicenceAccepted($retour); $output = json_encode(array($retour,$connected,$admin,$licence_acceptee)); print($output); } function getElement($uid){ $connected=false; session_start(); // Non connect� : verification if (isset($uid[1])) { // Identification if (!$this->GetUser()) { // Si non identifi� if ($this->LoginUser($uid[0],$uid[1],1)) { // identification reussi $retour= $this->GetUserName(); $connected=true; } else { $retour = session_id(); $connected=false; } } else { // Deja identifi� $retour= $this->GetUserName(); $connected=true; } } else { // Deconnection $this->LogoutUser(); $retour = session_id(); $connected=false; } $admin = $this->isAdmin($retour) ; $licence_acceptee = $this->isLicenceAccepted($retour) ; $output = json_encode(array($retour,$connected,$admin,$licence_acceptee)); print($output); } // USERS function LoadUser($name) { $DB=$this->connectDB($this->config,'database_ident'); $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)."'"; $res =& $DB->query($query); if (DB::isError($res)) { die($res->getMessage()); } while ($row =& $res->fetchrow(DB_FETCHMODE_ASSOC)) { $password=$row['password']; } $admin = $this->isAdmin($name) ; $licence_acceptee = $this->isLicenceAccepted($name) ; $retour= array("name"=>$name,"password"=>$password,"admin"=>$admin,"licence_acceptee"=>$licence_acceptee); return $retour; } function GetUserName() { if ($user = $this->GetUser()) { $name = $user["name"]; } else { $name =""; } return $name; } function GetUser() { return (isset($_SESSION["user"]) ? $_SESSION["user"] : ''); } function SetUser($user, $remember=1) { $_SESSION["user"] = $user; $this->SetPersistentCookie("cel_name", $user["name"], $remember); $this->SetPersistentCookie("cel_password", $user["password"], $remember); $this->SetPersistentCookie("cel_remember", $remember, $remember); } function LogoutUser() { $_SESSION["user"] = ""; $this->DeleteCookie("cel_name"); $this->DeleteCookie("cel_password"); $this->DeleteCookie("cel_remember"); } function SetPersistentCookie($name, $value, $remember = 1) { SetCookie($name, $value, time() + ($remember ? 90*24*60*60 : 60 * 60),'/'); $_COOKIE[$name] = $value; } function DeleteCookie($name) { SetCookie($name, "", 1,'/'); $_COOKIE[$name] = ""; } function LoginUser($name,$password,$remember=1) { if ($existingUser = $this->LoadUser($name)) { if ($password!="debug") { if ($existingUser["password"] == md5($password)) { $this->SetUser($existingUser, $remember); return true; } else { return false; } } else { $this->SetUser($existingUser, $remember); return true; } } } function RememberedUser($name,$password,$remember=1) { if ($existingUser = $this->LoadUser($name)) { if ($existingUser["password"] == $password) { $this->SetUser($existingUser, $remember); return true; } else { return false; } } } function isLicenceAccepted($utilisateur) { //print_r($_COOKIE); if($_COOKIE['cel_licence_'.md5($utilisateur)] == 1) { return true; } if($_COOKIE['cel_licence_'.md5($utilisateur)] == true) { return true; } return false; } } /* +--Fin du code ---------------------------------------------------------------------------------------+ * $Log$ * Revision 1.5 2008-01-30 08:57:28 ddelon * fin mise en place mygwt * * Revision 1.4 2007-05-22 12:54:09 ddelon * Securisation acces utilisateur * * Revision 1.3 2007-05-21 18:12:20 ddelon * Gestion des importations locale de releves * * */ ?>