Rev 285 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php//+----------------------------------------------------------------------------------------------------------------+// GESTION DE L'IDENTIFICATIONClass ControleUtilisateur extends JRestService {private function envoyerMessageNonAutorise() {header('HTTP/1.0 401 Unauthorized');echo 'Accès interdit';exit(0);}private function envoyerAuth($message_accueil, $message_echec) {header('HTTP/1.0 401 Unauthorized');header('WWW-Authenticate: Basic realm="www.obs-saisons.fr"');header('Content-type: text/plain; charset=UTF-8');print $message_echec;exit(0);}protected function getAuthIdentifiant() {$id = (isset($_SERVER['PHP_AUTH_USER'])) ? $_SERVER['PHP_AUTH_USER'] : null;return $id;}protected function getAuthMotDePasse() {$mdp = (isset($_SERVER['PHP_AUTH_PW'])) ? $_SERVER['PHP_AUTH_PW'] : null;return $mdp;}public function authentifierAdmin() {$message_accueil = "Veuillez vous identifier avec votre compte Observatoire des saisons.";$message_echec = "Accès limité aux administrateurs de l'ods.\n"."Votre tentative d'identification a échoué.\n"."Actualiser la page pour essayer à nouveau si vous êtes bien inscrit comme administrateur.";return $this->authentifier($message_accueil, $message_echec, 'Admin');}private function authentifier($message_accueil, $message_echec, $type) {$id = $this->getAuthIdentifiant();if (!isset($id)) {$this->envoyerAuth($message_accueil, $message_echec);} else {$methodeAutorisation = "etre{$type}Autorise";$autorisation = $this->$methodeAutorisation();if ($autorisation == false) {$this->envoyerAuth($message_accueil, $message_echec);}}return true;}public function etreUtilisateurAutorise() {$identifiant = $this->getAuthIdentifiant();$mdp = md5($this->getAuthMotDePasse());$requete = 'SELECT COUNT(*) as existe FROM drupal_users du '.'WHERE name = '.$this->proteger($identifiant).' '.'AND pass = '.$this->proteger($mdp);$existe = $this->executerRequete($requete);$autorisation = (!empty($existe) && $existe['existe'] > 0) ? true :false;return $autorisation;}public function etreAdminAutorise() {$identifiant = $this->getAuthIdentifiant();$mdp = md5($this->getAuthMotDePasse());$requete = 'SELECT COUNT(*) as existe FROM drupal_users du '.'INNER JOIN drupal_users_roles dur '.'ON du.uid = dur.uid '.'WHERE name = '.$this->proteger($identifiant).' '.'AND pass = '.$this->proteger($mdp).' '.'AND rid = 3 ';$existe = $this->executerRequete($requete);$autorisation = (!empty($existe) && $existe[0]['existe'] > 0) ? true :false;return $autorisation;}public function controleAppelIpAutorisee() {$ips_autorisees = explode(',', $this->config['jrest_admin']['ip_autorisees']);$ip_appelante = $_SERVER['REMOTE_ADDR'];if(!in_array($ip_appelante, $ips_autorisees) && $ip_appelante != $_SERVER['SERVER_ADDR']) {$this->envoyerMessageNonAutorise();}return true;}}?>