Subversion Repositories Sites.obs-saisons.fr

Rev

Rev 282 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 282 Rev 285
1
<?php
1
<?php
2
//+----------------------------------------------------------------------------------------------------------------+
2
//+----------------------------------------------------------------------------------------------------------------+
3
// GESTION DE L'IDENTIFICATION
3
// GESTION DE L'IDENTIFICATION
4
Class ControleUtilisateur extends JRestService {
4
Class ControleUtilisateur extends JRestService {
-
 
5
	
-
 
6
	private function envoyerMessageNonAutorise() {
-
 
7
		header('HTTP/1.0 401 Unauthorized');
-
 
8
		echo 'Accès interdit';
-
 
9
		exit(0);
-
 
10
	}
5
	
11
	
6
	private function envoyerAuth($message_accueil, $message_echec) {
12
	private function envoyerAuth($message_accueil, $message_echec) {
7
		header('HTTP/1.0 401 Unauthorized');
13
		header('HTTP/1.0 401 Unauthorized');
8
		header('WWW-Authenticate: Basic realm="www.obs-saisons.fr"');
14
		header('WWW-Authenticate: Basic realm="www.obs-saisons.fr"');
9
		header('Content-type: text/plain; charset=UTF-8');
15
		header('Content-type: text/plain; charset=UTF-8');
10
		print $message_echec;
16
		print $message_echec;
11
		exit(0);
17
		exit(0);
12
	}
18
	}
13
	
19
	
14
	protected function getAuthIdentifiant() {
20
	protected function getAuthIdentifiant() {
15
		$id = (isset($_SERVER['PHP_AUTH_USER'])) ? $_SERVER['PHP_AUTH_USER'] : null;
21
		$id = (isset($_SERVER['PHP_AUTH_USER'])) ? $_SERVER['PHP_AUTH_USER'] : null;
16
		return $id;
22
		return $id;
17
	}
23
	}
18
	
24
	
19
	protected function getAuthMotDePasse() {
25
	protected function getAuthMotDePasse() {
20
		$mdp = (isset($_SERVER['PHP_AUTH_PW'])) ? $_SERVER['PHP_AUTH_PW'] : null;
26
		$mdp = (isset($_SERVER['PHP_AUTH_PW'])) ? $_SERVER['PHP_AUTH_PW'] : null;
21
		return $mdp;
27
		return $mdp;
22
	}
28
	}
23
	
29
	
24
	public function authentifierAdmin() {
30
	public function authentifierAdmin() {
25
		$message_accueil = "Veuillez vous identifier avec votre compte Observatoire des saisons.";
31
		$message_accueil = "Veuillez vous identifier avec votre compte Observatoire des saisons.";
26
		$message_echec = "Accès limité aux administrateurs de l'ods.\n".
32
		$message_echec = "Accès limité aux administrateurs de l'ods.\n".
27
				"Votre tentative d'identification a échoué.\n".
33
				"Votre tentative d'identification a échoué.\n".
28
				"Actualiser la page pour essayer à nouveau si vous êtes bien inscrit comme administrateur.";
34
				"Actualiser la page pour essayer à nouveau si vous êtes bien inscrit comme administrateur.";
29
		return $this->authentifier($message_accueil, $message_echec, 'Admin');
35
		return $this->authentifier($message_accueil, $message_echec, 'Admin');
30
	}
36
	}
31
	
37
	
32
	private function authentifier($message_accueil, $message_echec, $type) {
38
	private function authentifier($message_accueil, $message_echec, $type) {
33
		$id = $this->getAuthIdentifiant();
39
		$id = $this->getAuthIdentifiant();
34
		if (!isset($id)) {
40
		if (!isset($id)) {
35
			$this->envoyerAuth($message_accueil, $message_echec);
41
			$this->envoyerAuth($message_accueil, $message_echec);
36
		} else {
42
		} else {
37
			$methodeAutorisation = "etre{$type}Autorise";
43
			$methodeAutorisation = "etre{$type}Autorise";
38
			$autorisation = $this->$methodeAutorisation();
44
			$autorisation = $this->$methodeAutorisation();
39
 
45
 
40
			if ($autorisation == false) {
46
			if ($autorisation == false) {
41
				$this->envoyerAuth($message_accueil, $message_echec);
47
				$this->envoyerAuth($message_accueil, $message_echec);
42
			}
48
			}
43
		}
49
		}
44
		return true;
50
		return true;
45
	}
51
	}
46
	
52
	
47
	public function etreUtilisateurAutorise() {
53
	public function etreUtilisateurAutorise() {
48
		$identifiant = $this->getAuthIdentifiant();
54
		$identifiant = $this->getAuthIdentifiant();
49
		$mdp = md5($this->getAuthMotDePasse());
55
		$mdp = md5($this->getAuthMotDePasse());
50
		
56
		
51
		$requete = 'SELECT COUNT(*) as existe FROM ods_redesign.drupal_users du '.
57
		$requete = 'SELECT COUNT(*) as existe FROM drupal_users du '.
52
		           'WHERE name = '.$this->proteger($identifiant).' '.
58
		           'WHERE name = '.$this->proteger($identifiant).' '.
53
		           'AND pass = '.$this->proteger($mdp);
59
		           'AND pass = '.$this->proteger($mdp);
54
		
60
		
55
		$existe = $this->executerRequete($requete);
61
		$existe = $this->executerRequete($requete);
56
	
62
	
57
		$autorisation = (!empty($existe) && $existe['existe'] > 0) ? true :false;
63
		$autorisation = (!empty($existe) && $existe['existe'] > 0) ? true :false;
58
		return $autorisation;
64
		return $autorisation;
59
	}
65
	}
60
	
66
	
61
	public function etreAdminAutorise() {
67
	public function etreAdminAutorise() {
62
		$identifiant = $this->getAuthIdentifiant();
68
		$identifiant = $this->getAuthIdentifiant();
63
		$mdp = md5($this->getAuthMotDePasse());
69
		$mdp = md5($this->getAuthMotDePasse());
64
		
70
		
65
		$requete = 'SELECT COUNT(*) as existe FROM drupal_users du '.
71
		$requete = 'SELECT COUNT(*) as existe FROM drupal_users du '.
66
		           'INNER JOIN drupal_users_roles dur '.
72
		           'INNER JOIN drupal_users_roles dur '.
67
		           'ON du.uid = dur.uid '.
73
		           'ON du.uid = dur.uid '.
68
		           'WHERE name = '.$this->proteger($identifiant).' '.
74
		           'WHERE name = '.$this->proteger($identifiant).' '.
69
		           	'AND pass = '.$this->proteger($mdp).' '.
75
		           	'AND pass = '.$this->proteger($mdp).' '.
70
		           	'AND rid = 3 ';
76
		           	'AND rid = 3 ';
71
		$existe = $this->executerRequete($requete);
77
		$existe = $this->executerRequete($requete);
72
	
78
	
73
		$autorisation = (!empty($existe) && $existe[0]['existe'] > 0) ? true :false;
79
		$autorisation = (!empty($existe) && $existe[0]['existe'] > 0) ? true :false;
74
		return $autorisation;
80
		return $autorisation;
75
	}
81
	}
-
 
82
	
-
 
83
	public function controleAppelIpAutorisee() {
-
 
84
		$ips_autorisees = explode(',', $this->config['jrest_admin']['ip_autorisees']);
-
 
85
		$ip_appelante = $_SERVER['REMOTE_ADDR'];
-
 
86
		if(!in_array($ip_appelante, $ips_autorisees) && $ip_appelante != $SERVER['SERVER_ADDR']) {
-
 
87
			$this->envoyerMessageNonAutorise();
-
 
88
		}
-
 
89
		return true;
-
 
90
	}
76
}
91
}
77
?>
92
?>