Line 29... |
Line 29... |
29 |
* @version $Id$
|
29 |
* @version $Id$
|
30 |
* @copyright 2009
|
30 |
* @copyright 2009
|
31 |
*/
|
31 |
*/
|
32 |
class CoelUtilisateur extends Coel {
|
32 |
class CoelUtilisateur extends Coel {
|
Line -... |
Line 33... |
- |
|
33 |
|
- |
|
34 |
private $licence_acceptee = false;
|
33 |
|
35 |
|
34 |
// TODO : controle systematique... dans tous les services si connected : name cookie = name service
|
36 |
// TODO : controle systematique... dans tous les services si connected : name cookie = name service
|
35 |
public function getRessource(){
|
37 |
public function getRessource(){
|
36 |
$this->getElement(array('*','*'));
|
38 |
$this->getElement(array('*','*'));
|
Line 37... |
Line 39... |
37 |
}
|
39 |
}
|
38 |
|
40 |
|
39 |
public function getElement($param){
|
41 |
public function getElement($param){
|
Line 40... |
Line 42... |
40 |
$identification = false;
|
42 |
$identification = false;
|
41 |
$info = array();
|
43 |
$info = array();
|
42 |
|
44 |
|
43 |
// Si la licence n'a pas été accepté nous réinitialisons tout
|
45 |
// Si la licence n'a pas été accepté nous réinitialisons tout
|
Line 44... |
Line 46... |
44 |
if (!isset($_COOKIE['coel_licence']) || (isset($_COOKIE['coel_licence']) && $_COOKIE['coel_licence'] != 1)) {
|
46 |
if (!isset($param[2]) && (!isset($_COOKIE['coel_licence']) || (isset($_COOKIE['coel_licence']) && $_COOKIE['coel_licence'] != 1))) {
|
45 |
$this->deconnecterUtilisateur();
|
47 |
$this->deconnecterUtilisateur();
|
- |
|
48 |
}
|
- |
|
49 |
|
46 |
}
|
50 |
// S'il y a 3 paramètres, c'est qu'on cherche à mettre à jour la licence
|
47 |
|
51 |
if (isset($param[2])) {
|
48 |
// S'il y a 3 paramètres, c'est qu'on cherche à mettre à jour la licence
|
52 |
$this->debug[] = "Licence acceptee";
|
49 |
if (isset($param[2])) {
|
53 |
$this->licence_acceptee = true;
|
50 |
// Mise à jour de la licence
|
54 |
// Mise à jour de la licence
|
Line 182... |
Line 186... |
182 |
$utilisateur_existant['mot_de_passe'] = $mot_de_passe_sha1;
|
186 |
$utilisateur_existant['mot_de_passe'] = $mot_de_passe_sha1;
|
183 |
}
|
187 |
}
|
Line 184... |
Line 188... |
184 |
|
188 |
|
185 |
// Vérification de la nécessité de mettre à jour l'utilisateur du COEL vis à vis de l'annuaire de Tela Botanica
|
189 |
// Vérification de la nécessité de mettre à jour l'utilisateur du COEL vis à vis de l'annuaire de Tela Botanica
|
- |
|
190 |
if (!is_null($infosAnnuaire) && $this->avoirBesoinMiseAJour($utilisateur_existant)) {
|
186 |
if (!is_null($infosAnnuaire) && $this->avoirBesoinMiseAJour($utilisateur_existant)) {
|
191 |
$this->debug[] = "Besoin d'une mise à jour";
|
187 |
// Vérifions que la personne s'est bien identifiée
|
192 |
// Vérifions que la personne s'est bien identifiée
|
- |
|
193 |
if ($infosAnnuaire['mot_de_passe'] == $mot_de_passe_md5) {
|
188 |
if ($infosAnnuaire['mot_de_passe'] == $mot_de_passe_md5) {
|
194 |
$this->debug[] = "Identification correcte avec md5";
|
Line 189... |
Line 195... |
189 |
$utilisateur_existant = $this->getInfoAnnuaireCoelDepuisInfoAnnuaireDistant($mot_de_passe_sha1, $infosAnnuaire);
|
195 |
$utilisateur_existant = $this->getInfoAnnuaireCoelDepuisInfoAnnuaireDistant($mot_de_passe_sha1, $infosAnnuaire);
|
- |
|
196 |
|
190 |
|
197 |
$presence_dans_coel = $this->verifierPresenceUtilisateur($infosAnnuaire['id']);
|
191 |
$presence_dans_coel = $this->verifierPresenceUtilisateur($infosAnnuaire['id']);
|
198 |
$this->debug[] = "Presence:$presence_dans_coel";
|
- |
|
199 |
if ($presence_dans_coel) {
|
192 |
if ($presence_dans_coel) {
|
200 |
// Nécessite de faire une mise à jour
|
193 |
// Nécessite de faire une mise à jour
|
201 |
$this->debug[] = "Mise à jour de l'utilisateur {$infosAnnuaire['id']}";
|
194 |
$this->mettreAJourUtilisateur($mote_de_passe_sha1, $infosAnnuaire);
|
202 |
$this->mettreAJourUtilisateur($mot_de_passe_sha1, $infosAnnuaire);
|
195 |
$utilisateur_existant['licence'] = (int) $this->recupererLicenceUtilisateur($infosAnnuaire['id']);
|
203 |
$utilisateur_existant['licence'] = (int) $this->recupererLicenceUtilisateur($infosAnnuaire['id']);
|
- |
|
204 |
} else {
|
196 |
} else {
|
205 |
// Nécessite d'ajouter le nouvel utilisateur
|
197 |
// Nécessite d'ajouter le nouvel utilisateur
|
206 |
$this->debug[] = "Ajout d'une nouvel utilisateur";
|
Line 198... |
Line 207... |
198 |
$this->ajouterUtilisateurACoel($infosAnnuaire, $mot_de_passe_sha1);
|
207 |
$this->ajouterUtilisateurACoel($infosAnnuaire, $mot_de_passe_sha1);
|
199 |
}
|
208 |
}
|
- |
|
209 |
|
200 |
|
210 |
$this->setUtilisateur($utilisateur_existant, $permanence);
|
201 |
$this->setUtilisateur($utilisateur_existant, $permanence);
|
211 |
} else {
|
202 |
} else {
|
212 |
$this->debug[] = "Identification INCORRECTE avec md5";
|
203 |
return false;
|
213 |
return false;
|
204 |
}
|
214 |
}
|
Line 261... |
Line 271... |
261 |
return $utilisateur_existant;
|
271 |
return $utilisateur_existant;
|
262 |
}
|
272 |
}
|
Line 263... |
Line 273... |
263 |
|
273 |
|
264 |
private function verifierPresenceUtilisateur($id) {
|
274 |
private function verifierPresenceUtilisateur($id) {
|
265 |
$present = false;
|
- |
|
- |
|
275 |
$present = false;
|
266 |
|
276 |
$cp_ce_projet = $this->config['coel']['idProjetUtilisateurs'];
|
267 |
$requete = 'SELECT COUNT(cp_id_personne) AS nbre '.
|
277 |
$requete = 'SELECT COUNT(cp_id_personne) AS nbre '.
|
268 |
'FROM coel_personne '.
|
278 |
'FROM coel_personne '.
|
- |
|
279 |
"WHERE cp_ce_annuaire = {$this->bdd->quote($id)} ".
|
- |
|
280 |
" AND cp_ce_annuaire = cp_id_personne ".
|
269 |
"WHERE cp_ce_annuaire = {$this->bdd->quote($id)} ";
|
281 |
" AND cp_ce_projet = '$cp_ce_projet' ";
|
270 |
try {
|
282 |
try {
|
271 |
$nbre = $this->bdd->query($requete)->fetchColumn();
|
283 |
$nbre = $this->bdd->query($requete)->fetchColumn();
|
272 |
if ($nbre === false) {
|
284 |
if (0 == $nbre) {
|
273 |
$this->debug[] = "L'utilisateur n'est pas présent dans l'annuaire de COEL.";
|
285 |
$this->debug[] = "Utilisateur NON présent dans l'annuaire de COEL.";
|
- |
|
286 |
} else if (1 == $nbre) {
|
274 |
} else {
|
287 |
$this->debug[] = "Utilisateur présent dans l'annuaire de COEL.";
|
- |
|
288 |
$present = true;
|
- |
|
289 |
} else if (false === $nbre) {
|
275 |
$present = true;
|
290 |
$this->debug[] = "Erreur dans la requête de vérification de présence dans l'annuaire de COEL.";
|
276 |
}
|
291 |
}
|
277 |
} catch (PDOException $e) {
|
292 |
} catch (PDOException $e) {
|
278 |
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
|
293 |
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
|
Line 279... |
Line 294... |
279 |
}
|
294 |
}
|
280 |
|
295 |
|
Line 281... |
Line 296... |
281 |
return $present;
|
296 |
return $present;
|
- |
|
297 |
}
|
282 |
}
|
298 |
|
283 |
|
299 |
private function recupererLicenceUtilisateur($id) {
|
284 |
private function recupererLicenceUtilisateur($id) {
|
300 |
$cp_ce_projet = $this->config['coel']['idProjetUtilisateurs'];
|
- |
|
301 |
$requete = 'SELECT cp_mark_licence '.
|
- |
|
302 |
'FROM coel_personne '.
|
285 |
$requete = 'SELECT cp_mark_licence '.
|
303 |
"WHERE cp_ce_annuaire = {$this->bdd->quote($id)} ".
|
286 |
'FROM coel_personne '.
|
304 |
" AND cp_ce_annuaire = cp_id_personne ".
|
287 |
"WHERE cp_ce_annuaire = {$this->bdd->quote($id)} ";
|
305 |
" AND cp_ce_projet = '$cp_ce_projet' ";
|
288 |
try {
|
306 |
try {
|
289 |
$licence = $this->bdd->query($requete)->fetchColumn();
|
307 |
$licence = $this->bdd->query($requete)->fetchColumn();
|
Line 298... |
Line 316... |
298 |
}
|
316 |
}
|
299 |
}
|
317 |
}
|
Line 300... |
Line 318... |
300 |
|
318 |
|
301 |
private function mettreAJourMotDePasse($login, $mot_de_passe_md5, $mot_de_passe_sha1) {
|
319 |
private function mettreAJourMotDePasse($login, $mot_de_passe_md5, $mot_de_passe_sha1) {
|
- |
|
320 |
try {
|
302 |
try {
|
321 |
$cp_ce_projet = $this->config['coel']['idProjetUtilisateurs'];
|
303 |
$requete = 'UPDATE coel_personne '.
|
322 |
$requete = 'UPDATE coel_personne '.
|
304 |
"SET cp_mot_de_passe = '$mot_de_passe_sha1' ".
|
323 |
"SET cp_mot_de_passe = '$mot_de_passe_sha1' ".
|
- |
|
324 |
"WHERE cp_login = '$login' ".
|
305 |
"WHERE cp_login = '$login' ".
|
325 |
" AND cp_ce_projet = '$cp_ce_projet' ".
|
306 |
"AND cp_mot_de_passe = '$mot_de_passe_md5' ";
|
326 |
" AND cp_mot_de_passe = '$mot_de_passe_md5' ";
|
307 |
// Ajout des données
|
327 |
// Ajout des données
|
308 |
$resultat = $this->bdd->exec($requete);
|
328 |
$resultat = $this->bdd->exec($requete);
|
309 |
if ($resultat === false) {
|
329 |
if ($resultat === false) {
|
310 |
$this->messages[] = "Le mot de passe de l'utilisateur n'a pas été mis à jour car la requête a échouée.";
|
330 |
$this->messages[] = "Le mot de passe de l'utilisateur n'a pas été mis à jour car la requête a échouée.";
|
Line 317... |
Line 337... |
317 |
private function mettreAJourUtilisateur($mot_de_passe_sha1, $infos) {
|
337 |
private function mettreAJourUtilisateur($mot_de_passe_sha1, $infos) {
|
318 |
try {
|
338 |
try {
|
319 |
$cp_ce_projet = $this->config['coel']['idProjetUtilisateurs'];
|
339 |
$cp_ce_projet = $this->config['coel']['idProjetUtilisateurs'];
|
320 |
$cp_fmt_nom_complet = $infos['prenom'].' '.$infos['nom'];
|
340 |
$cp_fmt_nom_complet = $infos['prenom'].' '.$infos['nom'];
|
321 |
$requete = 'UPDATE coel_personne '.
|
341 |
$requete = 'UPDATE coel_personne '.
|
322 |
"SET cp_id_personne = '{$infos['id']}', cp_ce_projet = '$cp_ce_projet', ".
|
342 |
"SET cp_id_personne = '{$infos['id']}', ".
|
323 |
" cp_fmt_nom_complet = '$cp_fmt_nom_complet', cp_prenom = '{$infos['prenom']}', cp_nom = '{$infos['nom']}', ".
|
343 |
" cp_fmt_nom_complet = '$cp_fmt_nom_complet', cp_prenom = '{$infos['prenom']}', cp_nom = '{$infos['nom']}', ".
|
324 |
" cp_code_postal = '{$infos['code_postal']}', cp_ville = '{$infos['ville']}', cp_truk_courriel = '{$infos['courriel']}', ".
|
344 |
" cp_code_postal = '{$infos['code_postal']}', cp_ville = '{$infos['ville']}', cp_truk_courriel = '{$infos['courriel']}', ".
|
325 |
" cp_login = '{$infos['courriel']}', cp_mot_de_passe = '$mot_de_passe_sha1', cp_ce_annuaire = '{$infos['id']}' ".
|
345 |
" cp_login = '{$infos['courriel']}', cp_mot_de_passe = '$mot_de_passe_sha1', cp_ce_annuaire = '{$infos['id']}' ".
|
326 |
"WHERE cp_login = '$login' ".
|
346 |
"WHERE cp_login = '$login' ".
|
- |
|
347 |
" AND cp_ce_projet = '$cp_ce_projet' ".
|
327 |
"AND cp_mot_de_passe = '$mot_de_passe_md5' ";
|
348 |
" AND cp_mot_de_passe = '$mot_de_passe_md5' ";
|
- |
|
349 |
|
328 |
// Ajout des données
|
350 |
// Ajout des données
|
329 |
$resultat = $this->bdd->exec($requete);
|
351 |
$resultat = $this->bdd->exec($requete);
|
330 |
if ($resultat === false) {
|
352 |
if ($resultat === false) {
|
331 |
$this->messages[] = "L'utilisateur n'a pas été mis à jour car la requête a échouée.";
|
353 |
$this->messages[] = "L'utilisateur n'a pas été mis à jour car la requête a échouée.";
|
332 |
}
|
354 |
}
|
Line 342... |
Line 364... |
342 |
// de l'annuaire Tela. Dans CoelPersonne, les personnes qui ne sont pas utilisateur sont ajoutés avec un id supérieur à 100 000
|
364 |
// de l'annuaire Tela. Dans CoelPersonne, les personnes qui ne sont pas utilisateur sont ajoutés avec un id supérieur à 100 000
|
343 |
$cp_ce_projet = $this->config['coel']['idProjetUtilisateurs'];
|
365 |
$cp_ce_projet = $this->config['coel']['idProjetUtilisateurs'];
|
344 |
$cp_fmt_nom_complet = $infos['prenom'].' '.$infos['nom'];
|
366 |
$cp_fmt_nom_complet = $infos['prenom'].' '.$infos['nom'];
|
345 |
$cp_mark_licence = '0';
|
367 |
$cp_mark_licence = '0';
|
346 |
$requete = 'INSERT INTO coel_personne '.
|
368 |
$requete = 'INSERT INTO coel_personne '.
|
347 |
"(cp_id_personne, cp_ce_projet, cp_fmt_nom_complet, cp_prenom, cp_nom, cp_code_postal,
|
369 |
' (cp_id_personne, cp_ce_projet, cp_fmt_nom_complet, cp_prenom, cp_nom, cp_code_postal, '.
|
348 |
cp_ville, cp_truk_courriel, cp_login, cp_mot_de_passe, cp_ce_annuaire, cp_mark_licence) ".
|
370 |
' cp_ville, cp_truk_courriel, cp_login, cp_mot_de_passe, cp_ce_annuaire, cp_mark_licence) '.
|
349 |
"VALUES ('{$infos['id']}, '$cp_ce_projet', '$cp_fmt_nom_complet', '{$infos['prenom']}', '{$infos['nom']}',".
|
371 |
"VALUES ('{$infos['id']}', '$cp_ce_projet', '$cp_fmt_nom_complet', '{$infos['prenom']}', '{$infos['nom']}', ".
|
350 |
"'{$infos['code_postal']}', '{$infos['ville']}', '{$infos['courriel']}', '{$infos['courriel']}', '".$mot_de_passe_sha1."',".
|
372 |
"'{$infos['code_postal']}', '{$infos['ville']}', '{$infos['courriel']}', '{$infos['courriel']}', '".$mot_de_passe_sha1."', ".
|
351 |
"'{$infos['id']}', $cp_mark_licence) ";
|
373 |
"'{$infos['id']}', $cp_mark_licence) ";
|
- |
|
374 |
//$this->debug[] = $requete;
|
352 |
// Ajout des données
|
375 |
// Ajout des données
|
353 |
$resultat = $this->bdd->exec($requete);
|
376 |
$resultat = $this->bdd->exec($requete);
|
354 |
if ($resultat === false) {
|
377 |
if ($resultat === false) {
|
355 |
$this->messages[] = "L'utilisateur n'a pas été ajouté dans coel_personne car la requête a échouée.";
|
378 |
$this->debug[] = "Utilisateur NON ajouté dans coel_personne car la requête a échouée.";
|
- |
|
379 |
} else {
|
- |
|
380 |
$this->debug[] = "Utilisateur ajouté à coel_personne.";
|
356 |
}
|
381 |
}
|
357 |
} catch (PDOException $e) {
|
382 |
} catch (PDOException $e) {
|
358 |
$messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);
|
383 |
$messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete);
|
359 |
}
|
384 |
}
|
360 |
}
|
385 |
}
|
Line 395... |
Line 420... |
395 |
|
420 |
|
396 |
private function setInfosAnnuaire($infosAnnuaire) {
|
421 |
private function setInfosAnnuaire($infosAnnuaire) {
|
397 |
$_SESSION['coel_infosAnnuaire'] = $infosAnnuaire;
|
422 |
$_SESSION['coel_infosAnnuaire'] = $infosAnnuaire;
|
Line 398... |
Line 423... |
398 |
}
|
423 |
}
|
399 |
|
424 |
|
400 |
private function accepterLicence($utilisateur) {
|
425 |
private function accepterLicence($login) {
|
- |
|
426 |
$sortie = false;
|
401 |
$sortie = false;
|
427 |
try {
|
402 |
try {
|
428 |
$cp_ce_projet = $this->config['coel']['idProjetUtilisateurs'];
|
403 |
$requete = 'UPDATE coel_personne '.
|
429 |
$requete = 'UPDATE coel_personne '.
|
- |
|
430 |
'SET cp_mark_licence = 1 '.
|
404 |
'SET cp_mark_licence = 1 '.
|
431 |
"WHERE cp_login = {$this->bdd->quote($login)} ";
|
405 |
"WHERE cp_login = {$this->bdd->quote($utilisateur)} ";
|
432 |
" AND cp_ce_projet = '$cp_ce_projet' ";
|
406 |
$resultat = $this->bdd->exec($requete);
|
433 |
$resultat = $this->bdd->exec($requete);
|
407 |
if ($resultat === false) {
|
434 |
if ($resultat === false) {
|
- |
|
435 |
$this->debug[] = "La table Personne n'a pas été mise à jour car la requête a échouée.";
|
408 |
$this->log[] = "La table Personne n'a pas été mise à jour car la requête a échouée.";
|
436 |
} else {
|
409 |
} else {
|
437 |
$this->debug[] = "Création du cookie licence.";
|
410 |
$_SESSION['coel_utilisateur']['licence'] = '1';
|
438 |
$_SESSION['coel_utilisateur']['licence'] = '1';
|
411 |
$this->setCookiePersistant('coel_licence', $utilisateur['licence']);
|
439 |
$this->setCookiePersistant('coel_licence', '1');
|
412 |
$sortie = true;
|
440 |
$sortie = true;
|
413 |
}
|
441 |
}
|
414 |
} catch (PDOException $e) {
|
442 |
} catch (PDOException $e) {
|