Subversion Repositories eFlore/Applications.cel

Rev

Rev 3027 | Rev 3032 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3027 Rev 3028
Line 37... Line 37...
37
			$utilisateur['connecte'] = true;
37
			$utilisateur['connecte'] = true;
38
		}
38
		}
39
		return $utilisateur;
39
		return $utilisateur;
40
	}
40
	}
Line -... Line 41...
-
 
41
 
41
 
42
	/**
42
	private function chargerInfosUtilisateur($login) {
43
	 * Retourne les informations contenues dans la table cel_utilisateurs_infos,
-
 
44
	 * pour un login (adresse courriel) donné
-
 
45
	 */
43
		//var_dump($this->token_decode);
46
	protected function lireCelUtilisateursInfos($login) {
44
		$requete = 'SELECT * '.
47
		$requete = 'SELECT * '.
45
				'FROM cel_utilisateurs_infos AS cu '.
48
				'FROM cel_utilisateurs_infos AS cu '.
46
				'WHERE courriel = '.Cel::db()->proteger($login).' '.
49
				'WHERE courriel = '.Cel::db()->proteger($login).' '.
47
				' -- '.__FILE__.':'.__LINE__;
50
				' -- '.__FILE__.':'.__LINE__;
Line 48... Line -...
48
		$resultats = Cel::db()->requeter($requete);
-
 
49
 
51
		$resultats = Cel::db()->requeter($requete);
50
		$retour = false;
52
 
-
 
53
		if (is_array($resultats) && count($resultats) > 0) {
-
 
54
			return $resultats[0];
-
 
55
		} else {
-
 
56
			return false;
-
 
57
		}
-
 
58
	}
-
 
59
 
-
 
60
	/**
-
 
61
	 * Retourne true si le profil local stocké dans cel_utilisateurs_infos
-
 
62
	 * n'est plus à jour par rapport aux informations du jeton SSO; si le
-
 
63
	 * jeton est vide, retourne false pour éviter de tout casser
-
 
64
	 */
-
 
65
	protected function profilAChange($infosCUI) {
-
 
66
		$aChange = false;
-
 
67
		if ($this->token_decode != null) {
-
 
68
			$aChange = ($this->token_decode['nom'] != $infosCUI['nom'])
-
 
69
				|| ($this->token_decode['intitule'] != $infosCUI['intitule'])
-
 
70
				|| ($this->token_decode['prenom'] != $infosCUI['prenom']);
-
 
71
		}
-
 
72
		//var_dump($aChange);
-
 
73
		return $aChange;
-
 
74
	}
-
 
75
 
-
 
76
	/**
-
 
77
	 * Met à jour cel_utilisateurs_infos en fonction des informations
-
 
78
	 * contenues par le jeton SSO; si ce dernier est vide, ne fait
-
 
79
	 * rien (boulette-proof)
-
 
80
	 */
-
 
81
	protected function mettreAJourProfilLocal() {
-
 
82
		//echo "Mise à jour profil local !!";
-
 
83
		if ($this->token_decode != null && $this->token_decode['id'] != '') {
-
 
84
			$requete = 'UPDATE cel_utilisateurs_infos SET'
-
 
85
				. ' nom = ' . Cel::db()->proteger($this->token_decode['nom']) . ', '
-
 
86
				. ' intitule = ' . Cel::db()->proteger($this->token_decode['intitule']) . ', '
-
 
87
				. ' prenom = ' . Cel::db()->proteger($this->token_decode['prenom'])
-
 
88
				. ' WHERE id_utilisateur = ' . Cel::db()->proteger($this->token_decode['id'])
-
 
89
				. ' -- '.__FILE__.':'.__LINE__
-
 
90
			;
-
 
91
			//var_dump($requete);
-
 
92
			Cel::db()->executer($requete);
-
 
93
		}
-
 
94
	}
-
 
95
 
-
 
96
	/**
-
 
97
	 * Répercute le nom et le prénom contenus dans le jeton SSO (si au
-
 
98
	 * moins un des deux n'est pas vide) dans toutes les observations
-
 
99
	 * et images de l'auteur; si le jeton SSO est vide, ne fait rien
-
 
100
	 * (boulette-proof)
-
 
101
	 * 
-
 
102
	 * @TODO gérer l'intitulé un jour
-
 
103
	 */
-
 
104
	protected function mettreAJourCoordonneesDansObsEtImages() {
-
 
105
		//echo "Mise à jour obs et images !!";
-
 
106
		if ($this->token_decode != null && $this->token_decode['id'] != '' && ($this->token_decode['nom'] != '' || $this->token_decode['prenom'] != '')) {
-
 
107
			$requete = 'UPDATE cel_obs SET'
-
 
108
				. ' nom_utilisateur = ' . Cel::db()->proteger($this->token_decode['nom']) . ', '
-
 
109
				. ' prenom_utilisateur = ' . Cel::db()->proteger($this->token_decode['prenom'])
-
 
110
				. ' WHERE ce_utilisateur = ' . Cel::db()->proteger($this->token_decode['id']) // s'assurer qu'il y a des ' autour de l'ID sans quoi les hash MD5 matcheront !
-
 
111
				. ' -- '.__FILE__.':'.__LINE__
-
 
112
			;
-
 
113
			//var_dump($requete);
-
 
114
			Cel::db()->executer($requete);
-
 
115
			$requete = 'UPDATE cel_images SET'
-
 
116
				. ' nom_utilisateur = ' . Cel::db()->proteger($this->token_decode['nom']) . ', '
-
 
117
				. ' prenom_utilisateur = ' . Cel::db()->proteger($this->token_decode['prenom'])
-
 
118
				. ' WHERE ce_utilisateur = ' . Cel::db()->proteger($this->token_decode['id']) // s'assurer qu'il y a des ' autour de l'ID sans quoi les hash MD5 matcheront !
-
 
119
				. ' -- '.__FILE__.':'.__LINE__
-
 
120
			;
-
 
121
			//var_dump($requete);
-
 
122
			Cel::db()->executer($requete);
-
 
123
		}
-
 
124
	}
-
 
125
 
-
 
126
	/**
-
 
127
	 * Charge l'état de l'utilisateur en fonction du jeton SSO avec lequel celui-ci
-
 
128
	 * est identifié; si c'est la première fois que l'utilisateur se connecte au CeL,
-
 
129
	 * crée un profil local dans celè_utilisateurs_infos; si le profil a changé depuis
-
 
130
	 * la dernière connextion, le met à jour ainsi que les coordonnées dans les images
-
 
131
	 * et observations
-
 
132
	 * 
-
 
133
	 * @param string $login le login (adresse courriel) de l'utilisateur
-
 
134
	 */
-
 
135
	private function chargerInfosUtilisateur($login) {
-
 
136
		//var_dump($this->token_decode);
-
 
137
		$infosCUI = $this->lireCelUtilisateursInfos($login);
-
 
138
 
-
 
139
		$retour = false;
-
 
140
		if ($infosCUI !== false) {
-
 
141
			// Les données du profil ont-elles changé depuis la dernière connexion ?
-
 
142
			if ($this->profilAChange($infosCUI)) {
-
 
143
				// mise à jour du profil local
-
 
144
				$this->mettreAJourProfilLocal();
-
 
145
				// mise à jour des obs et images
-
 
146
				$this->mettreAJourCoordonneesDansObsEtImages();
-
 
147
				// re-lecture du nouveau profil local (permet de détecter si la mise à jour s'est mal passée)
-
 
148
				$retour = $this->lireCelUtilisateursInfos($login);
-
 
149
			} else {
51
		if (is_array($resultats) && count($resultats) > 0) {
150
				$retour = $infosCUI;
52
			$retour = $resultats[0];
151
			}
53
		} else {
152
		} else {
54
			// première connexion au CeL !
153
			// première connexion au CeL !
55
			$this->initialiserInfosUtilisateur();
154
			$this->initialiserInfosUtilisateur();