Subversion Repositories Applications.annuaire

Compare Revisions

Ignore whitespace Rev 393 → Rev 394

/trunk/jrest/services/Utilisateur.php
23,6 → 23,9
private $annuaireModele = null;
private $messagerieModele = null;
 
/*+----------------------------------------------------------------------------------------------------+*/
// GET : consultation
 
public function getElement($ressources){
$this->ressources = $ressources;
$this->idAnnuaire = Config::get('annuaire_defaut');
49,6 → 52,19
}
 
/**
* Permet de vérifier si l'utilisateur est déjà connecté.
* RESSOURCE : /utilisateur/identification
* PARAMÊTRES : aucun
* RÉPONSE : Tableau possédant un courriel de la ressource en clé et en valeur :
* - identifie : indiquer si l'utilisateur a été identifié (true) ou pas (false)
*/
public function getIdentification() {
$infos = array();
$infos['identifie'] = $this->verifierIdentification();
return $infos;
}
 
/**
* Permet d'obtenir les prénoms et noms des courriels des utilisateurs indiqués dans la ressource.
* RESSOURCE : /utilisateur/prenom-nom-par-courriel/[courriel,courriel,...]
* PARAMÊTRES : aucun
130,6 → 146,9
return $intitule;
}
 
/*+----------------------------------------------------------------------------------------------------+*/
// POST : mise à jour
 
public function updateElement($ressources, $donnees) {
$this->ressources = $ressources;
$this->donnees = $donnees;
218,5 → 237,59
return $this->messagerieModele;
}
 
/*+----------------------------------------------------------------------------------------------------+*/
// PUT : ajout
 
public function createElement($donnees) {
$this->donnees = $donnees;
$this->idAnnuaire = Config::get('annuaire_defaut');
 
$infos = null;
if (isset($this->donnees['methode'])) {
$methode_demande = $this->donnees['methode'];
$methode = $this->traiterNomMethodePut($methode_demande);
if (method_exists($this, $methode)) {
$infos = $this->$methode();
} else {
$this->messages[] = "Ce type de méthode '$methode_demande' n'est pas disponible pour la requete PUT.";
}
} else {
$this->messages[] = "Ce service n'est pas implémanté.";
}
 
if (!is_null($infos)) {
$this->envoyerJson($infos);
} else {
$info = 'Un problème est survenu : '.print_r($this->messages, true);
$this->envoyerTxt($info);
}
}
 
/**
* Permet d'identifier un utilisateur.
* RESSOURCE : /utilisateur
* POST :
* - methode = 'connexion' : methode doit valoir 'connexion' pour connecter l'utilisateur.
* - courriel : contient le courriel de l'utilisateur .
* - mdp : le mot de passe de l'utilisateur.
* RÉPONSE :
* - identifie : indiquer si l'utilisateur a été identifié (true) ou pas (false)
* - message : contient un message d'information complémentaire de l'état.
*/
private function createConnexion() {
$courriel = stripslashes($this->donnees['courriel']);
$mdp = stripslashes($this->donnees['mdp']);
 
$infos = null;
if ($this->verifierAcces($courriel, $mdp)) {
$infos['identifie'] = true;
$infos['message'] = "Bienvenu.";
$this->creerCookiePersistant($courriel, $mdp);
} else {
$infos['identifie'] = false;
$infos['message'] = "Le courriel ou le mot de passe saisi est incorrect.";
}
return $infos;
}
}
?>
/trunk/jrest/bibliotheque/JRestService.php
171,6 → 171,12
return $methode;
}
 
protected function traiterNomMethodePut($nom) {
$methode = 'create';
$methode .= str_replace(' ', '', ucwords(str_replace('-', ' ', strtolower($nom))));
return $methode;
}
 
protected function traiterParametresUrl($params_attendu, $params, $pourBDD = true) {
$sortie = array();
foreach ($params_attendu as $num => $nom) {
243,7 → 249,7
echo 'Accès interdit';
exit;
} else {
if($this->verifierAcces($_SERVER['PHP_AUTH_USER'])) {
if ($this->verifierAcces()) {
return ;
} else {
header('WWW-Authenticate: Basic realm="www.tela-botanica.org"');
255,29 → 261,47
}
}
 
protected function verifierAcces($id) {
$query = 'SELECT '.$this->config['database_ident']['ann_id'].' AS name '.
protected function verifierAcces($id = null, $mdp = null) {
$id = is_null($id) ? $_SERVER['PHP_AUTH_USER'] : $id;
$mdp = is_null($mdp) ? $_SERVER['PHP_AUTH_PW'] : $mdp;
 
$requete = 'SELECT '.$this->config['database_ident']['ann_id'].' AS courriel '.
'FROM '.$this->config['database_ident']['database'].'.'.$this->config['database_ident']['annuaire'].' '.
'WHERE '.$this->config['database_ident']['ann_id'].' = '.$this->bdd->quote($id).' '.
' AND '.$this->config['database_ident']['ann_pwd'].' = '.$this->config['database_ident']['pass_crypt_funct'].'('.$this->bdd->quote($_SERVER['PHP_AUTH_PW']).')' ;
$res = $this->bdd->query($query);
' AND '.$this->config['database_ident']['ann_pwd'].' = '.$this->config['database_ident']['pass_crypt_funct'].'('.$this->bdd->quote($mdp).')' ;
$resultat = $this->bdd->query($requete)->fetch();
 
if ($res == '') {
return false ;
$identifie = false;
if (isset($resultat['courriel'])) {
$identifie = true;
}
return $identifie;
}
 
if (DB::isError($res)) {
die($res->getMessage());
}
protected function creerCookiePersistant($id = null, $mdp = null) {
$id = is_null($id) ? $_SERVER['PHP_AUTH_USER'] : $id;
$mdp = is_null($mdp) ? $_SERVER['PHP_AUTH_PW'] : $mdp;
 
return true;
$nomCookie = $this->config['database_ident']['nom_cookie_persistant'];
$valeurCookie = md5($mdp).$id;
$dureeCookie = (int) time()+3600*24*30;// 1 mois à partir de l'appel
setcookie($nomCookie, $valeurCookie, $dureeCookie, '/');
}
 
protected function verifierIdentification() {
$identifie = false;
$nomCookie = $this->config['database_ident']['nom_cookie_persistant'];
if (isset($_COOKIE[$nomCookie])) {
$identifie = true;
}
return $identifie;
}
 
protected function estAutoriseMessagerie($adresse) {
$utilisateurs_messagerie = explode(',', $this->config['messagerie']['utilisateurs_autorises']);
return in_array($adresse, $utilisateurs_messagerie);
}
 
//+----------------------------------------------------------------------------------------------------------------+
// GESTION DES SQUELETTES PHP