Subversion Repositories eFlore/Applications.coel

Compare Revisions

Ignore whitespace Rev 1507 → Rev 1508

/trunk/jrest/services/CoelUtilisateur.php
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,10 → 318,12
private function mettreAJourMotDePasse($login, $mot_de_passe_md5, $mot_de_passe_sha1) {
try {
$requete = 'UPDATE coel_personne '.
$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_mot_de_passe = '$mot_de_passe_md5' ";
" 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) {
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_mot_de_passe = '$mot_de_passe_md5' ";
" 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']}',".
"'{$infos['code_postal']}', '{$infos['ville']}', '{$infos['courriel']}', '{$infos['courriel']}', '".$mot_de_passe_sha1."',".
' (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) {