31,6 → 31,8 |
*/ |
class CoelUtilisateur extends Coel { |
|
private $licence_acceptee = false; |
|
// TODO : controle systematique... dans tous les services si connected : name cookie = name service |
public function getRessource(){ |
$this->getElement(array('*','*')); |
41,12 → 43,14 |
$info = array(); |
|
// Si la licence n'a pas été accepté nous réinitialisons tout |
if (!isset($_COOKIE['coel_licence']) || (isset($_COOKIE['coel_licence']) && $_COOKIE['coel_licence'] != 1)) { |
if (!isset($param[2]) && (!isset($_COOKIE['coel_licence']) || (isset($_COOKIE['coel_licence']) && $_COOKIE['coel_licence'] != 1))) { |
$this->deconnecterUtilisateur(); |
} |
|
// S'il y a 3 paramètres, c'est qu'on cherche à mettre à jour la licence |
if (isset($param[2])) { |
$this->debug[] = "Licence acceptee"; |
$this->licence_acceptee = true; |
// Mise à jour de la licence |
if (!$this->accepterLicence($param[0])) { |
$this->debug[] = "Erreur de mise à jour licence utilisateur"; |
184,22 → 188,28 |
|
// Vérification de la nécessité de mettre à jour l'utilisateur du COEL vis à vis de l'annuaire de Tela Botanica |
if (!is_null($infosAnnuaire) && $this->avoirBesoinMiseAJour($utilisateur_existant)) { |
$this->debug[] = "Besoin d'une mise à jour"; |
// Vérifions que la personne s'est bien identifiée |
if ($infosAnnuaire['mot_de_passe'] == $mot_de_passe_md5) { |
$this->debug[] = "Identification correcte avec md5"; |
$utilisateur_existant = $this->getInfoAnnuaireCoelDepuisInfoAnnuaireDistant($mot_de_passe_sha1, $infosAnnuaire); |
|
$presence_dans_coel = $this->verifierPresenceUtilisateur($infosAnnuaire['id']); |
$this->debug[] = "Presence:$presence_dans_coel"; |
if ($presence_dans_coel) { |
// Nécessite de faire une mise à jour |
$this->mettreAJourUtilisateur($mote_de_passe_sha1, $infosAnnuaire); |
$this->debug[] = "Mise à jour de l'utilisateur {$infosAnnuaire['id']}"; |
$this->mettreAJourUtilisateur($mot_de_passe_sha1, $infosAnnuaire); |
$utilisateur_existant['licence'] = (int) $this->recupererLicenceUtilisateur($infosAnnuaire['id']); |
} else { |
// Nécessite d'ajouter le nouvel utilisateur |
$this->debug[] = "Ajout d'une nouvel utilisateur"; |
$this->ajouterUtilisateurACoel($infosAnnuaire, $mot_de_passe_sha1); |
} |
|
$this->setUtilisateur($utilisateur_existant, $permanence); |
} else { |
$this->debug[] = "Identification INCORRECTE avec md5"; |
return false; |
} |
} else if ($utilisateur_existant != false) { |
263,16 → 273,21 |
|
private function verifierPresenceUtilisateur($id) { |
$present = false; |
|
$cp_ce_projet = $this->config['coel']['idProjetUtilisateurs']; |
$requete = 'SELECT COUNT(cp_id_personne) AS nbre '. |
'FROM coel_personne '. |
"WHERE cp_ce_annuaire = {$this->bdd->quote($id)} "; |
"WHERE cp_ce_annuaire = {$this->bdd->quote($id)} ". |
" AND cp_ce_annuaire = cp_id_personne ". |
" AND cp_ce_projet = '$cp_ce_projet' "; |
try { |
$nbre = $this->bdd->query($requete)->fetchColumn(); |
if ($nbre === false) { |
$this->debug[] = "L'utilisateur n'est pas présent dans l'annuaire de COEL."; |
} else { |
if (0 == $nbre) { |
$this->debug[] = "Utilisateur NON présent dans l'annuaire de COEL."; |
} else if (1 == $nbre) { |
$this->debug[] = "Utilisateur présent dans l'annuaire de COEL."; |
$present = true; |
} else if (false === $nbre) { |
$this->debug[] = "Erreur dans la requête de vérification de présence dans l'annuaire de COEL."; |
} |
} catch (PDOException $e) { |
$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage()); |
282,9 → 297,12 |
} |
|
private function recupererLicenceUtilisateur($id) { |
$cp_ce_projet = $this->config['coel']['idProjetUtilisateurs']; |
$requete = 'SELECT cp_mark_licence '. |
'FROM coel_personne '. |
"WHERE cp_ce_annuaire = {$this->bdd->quote($id)} "; |
"WHERE cp_ce_annuaire = {$this->bdd->quote($id)} ". |
" AND cp_ce_annuaire = cp_id_personne ". |
" AND cp_ce_projet = '$cp_ce_projet' "; |
try { |
$licence = $this->bdd->query($requete)->fetchColumn(); |
if ($licence === false) { |
300,9 → 318,11 |
|
private function mettreAJourMotDePasse($login, $mot_de_passe_md5, $mot_de_passe_sha1) { |
try { |
$cp_ce_projet = $this->config['coel']['idProjetUtilisateurs']; |
$requete = 'UPDATE coel_personne '. |
"SET cp_mot_de_passe = '$mot_de_passe_sha1' ". |
"WHERE cp_login = '$login' ". |
" AND cp_ce_projet = '$cp_ce_projet' ". |
"AND cp_mot_de_passe = '$mot_de_passe_md5' "; |
// Ajout des données |
$resultat = $this->bdd->exec($requete); |
319,12 → 339,14 |
$cp_ce_projet = $this->config['coel']['idProjetUtilisateurs']; |
$cp_fmt_nom_complet = $infos['prenom'].' '.$infos['nom']; |
$requete = 'UPDATE coel_personne '. |
"SET cp_id_personne = '{$infos['id']}', cp_ce_projet = '$cp_ce_projet', ". |
"SET cp_id_personne = '{$infos['id']}', ". |
" cp_fmt_nom_complet = '$cp_fmt_nom_complet', cp_prenom = '{$infos['prenom']}', cp_nom = '{$infos['nom']}', ". |
" cp_code_postal = '{$infos['code_postal']}', cp_ville = '{$infos['ville']}', cp_truk_courriel = '{$infos['courriel']}', ". |
" cp_login = '{$infos['courriel']}', cp_mot_de_passe = '$mot_de_passe_sha1', cp_ce_annuaire = '{$infos['id']}' ". |
"WHERE cp_login = '$login' ". |
" AND cp_ce_projet = '$cp_ce_projet' ". |
"AND cp_mot_de_passe = '$mot_de_passe_md5' "; |
|
// Ajout des données |
$resultat = $this->bdd->exec($requete); |
if ($resultat === false) { |
344,15 → 366,18 |
$cp_fmt_nom_complet = $infos['prenom'].' '.$infos['nom']; |
$cp_mark_licence = '0'; |
$requete = 'INSERT INTO coel_personne '. |
"(cp_id_personne, cp_ce_projet, cp_fmt_nom_complet, cp_prenom, cp_nom, cp_code_postal, |
cp_ville, cp_truk_courriel, cp_login, cp_mot_de_passe, cp_ce_annuaire, cp_mark_licence) ". |
"VALUES ('{$infos['id']}, '$cp_ce_projet', '$cp_fmt_nom_complet', '{$infos['prenom']}', '{$infos['nom']}',". |
' (cp_id_personne, cp_ce_projet, cp_fmt_nom_complet, cp_prenom, cp_nom, cp_code_postal, '. |
' cp_ville, cp_truk_courriel, cp_login, cp_mot_de_passe, cp_ce_annuaire, cp_mark_licence) '. |
"VALUES ('{$infos['id']}', '$cp_ce_projet', '$cp_fmt_nom_complet', '{$infos['prenom']}', '{$infos['nom']}', ". |
"'{$infos['code_postal']}', '{$infos['ville']}', '{$infos['courriel']}', '{$infos['courriel']}', '".$mot_de_passe_sha1."',". |
"'{$infos['id']}', $cp_mark_licence) "; |
//$this->debug[] = $requete; |
// Ajout des données |
$resultat = $this->bdd->exec($requete); |
if ($resultat === false) { |
$this->messages[] = "L'utilisateur n'a pas été ajouté dans coel_personne car la requête a échouée."; |
$this->debug[] = "Utilisateur NON ajouté dans coel_personne car la requête a échouée."; |
} else { |
$this->debug[] = "Utilisateur ajouté à coel_personne."; |
} |
} catch (PDOException $e) { |
$messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage(), $requete); |
397,18 → 422,21 |
$_SESSION['coel_infosAnnuaire'] = $infosAnnuaire; |
} |
|
private function accepterLicence($utilisateur) { |
private function accepterLicence($login) { |
$sortie = false; |
try { |
$cp_ce_projet = $this->config['coel']['idProjetUtilisateurs']; |
$requete = 'UPDATE coel_personne '. |
'SET cp_mark_licence = 1 '. |
"WHERE cp_login = {$this->bdd->quote($utilisateur)} "; |
"WHERE cp_login = {$this->bdd->quote($login)} "; |
" AND cp_ce_projet = '$cp_ce_projet' "; |
$resultat = $this->bdd->exec($requete); |
if ($resultat === false) { |
$this->log[] = "La table Personne n'a pas été mise à jour car la requête a échouée."; |
$this->debug[] = "La table Personne n'a pas été mise à jour car la requête a échouée."; |
} else { |
$this->debug[] = "Création du cookie licence."; |
$_SESSION['coel_utilisateur']['licence'] = '1'; |
$this->setCookiePersistant('coel_licence', $utilisateur['licence']); |
$this->setCookiePersistant('coel_licence', '1'); |
$sortie = true; |
} |
} catch (PDOException $e) { |