Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 3027 → Rev 3028

/trunk/jrest/bibliotheque/GestionUtilisateur.php
39,8 → 39,11
return $utilisateur;
}
 
private function chargerInfosUtilisateur($login) {
//var_dump($this->token_decode);
/**
* Retourne les informations contenues dans la table cel_utilisateurs_infos,
* pour un login (adresse courriel) donné
*/
protected function lireCelUtilisateursInfos($login) {
$requete = 'SELECT * '.
'FROM cel_utilisateurs_infos AS cu '.
'WHERE courriel = '.Cel::db()->proteger($login).' '.
47,10 → 50,106
' -- '.__FILE__.':'.__LINE__;
$resultats = Cel::db()->requeter($requete);
 
$retour = false;
if (is_array($resultats) && count($resultats) > 0) {
$retour = $resultats[0];
return $resultats[0];
} else {
return false;
}
}
 
/**
* Retourne true si le profil local stocké dans cel_utilisateurs_infos
* n'est plus à jour par rapport aux informations du jeton SSO; si le
* jeton est vide, retourne false pour éviter de tout casser
*/
protected function profilAChange($infosCUI) {
$aChange = false;
if ($this->token_decode != null) {
$aChange = ($this->token_decode['nom'] != $infosCUI['nom'])
|| ($this->token_decode['intitule'] != $infosCUI['intitule'])
|| ($this->token_decode['prenom'] != $infosCUI['prenom']);
}
//var_dump($aChange);
return $aChange;
}
 
/**
* Met à jour cel_utilisateurs_infos en fonction des informations
* contenues par le jeton SSO; si ce dernier est vide, ne fait
* rien (boulette-proof)
*/
protected function mettreAJourProfilLocal() {
//echo "Mise à jour profil local !!";
if ($this->token_decode != null && $this->token_decode['id'] != '') {
$requete = 'UPDATE cel_utilisateurs_infos SET'
. ' nom = ' . Cel::db()->proteger($this->token_decode['nom']) . ', '
. ' intitule = ' . Cel::db()->proteger($this->token_decode['intitule']) . ', '
. ' prenom = ' . Cel::db()->proteger($this->token_decode['prenom'])
. ' WHERE id_utilisateur = ' . Cel::db()->proteger($this->token_decode['id'])
. ' -- '.__FILE__.':'.__LINE__
;
//var_dump($requete);
Cel::db()->executer($requete);
}
}
 
/**
* Répercute le nom et le prénom contenus dans le jeton SSO (si au
* moins un des deux n'est pas vide) dans toutes les observations
* et images de l'auteur; si le jeton SSO est vide, ne fait rien
* (boulette-proof)
*
* @TODO gérer l'intitulé un jour
*/
protected function mettreAJourCoordonneesDansObsEtImages() {
//echo "Mise à jour obs et images !!";
if ($this->token_decode != null && $this->token_decode['id'] != '' && ($this->token_decode['nom'] != '' || $this->token_decode['prenom'] != '')) {
$requete = 'UPDATE cel_obs SET'
. ' nom_utilisateur = ' . Cel::db()->proteger($this->token_decode['nom']) . ', '
. ' prenom_utilisateur = ' . Cel::db()->proteger($this->token_decode['prenom'])
. ' 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 !
. ' -- '.__FILE__.':'.__LINE__
;
//var_dump($requete);
Cel::db()->executer($requete);
$requete = 'UPDATE cel_images SET'
. ' nom_utilisateur = ' . Cel::db()->proteger($this->token_decode['nom']) . ', '
. ' prenom_utilisateur = ' . Cel::db()->proteger($this->token_decode['prenom'])
. ' 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 !
. ' -- '.__FILE__.':'.__LINE__
;
//var_dump($requete);
Cel::db()->executer($requete);
}
}
 
/**
* Charge l'état de l'utilisateur en fonction du jeton SSO avec lequel celui-ci
* est identifié; si c'est la première fois que l'utilisateur se connecte au CeL,
* crée un profil local dans celè_utilisateurs_infos; si le profil a changé depuis
* la dernière connextion, le met à jour ainsi que les coordonnées dans les images
* et observations
*
* @param string $login le login (adresse courriel) de l'utilisateur
*/
private function chargerInfosUtilisateur($login) {
//var_dump($this->token_decode);
$infosCUI = $this->lireCelUtilisateursInfos($login);
 
$retour = false;
if ($infosCUI !== false) {
// Les données du profil ont-elles changé depuis la dernière connexion ?
if ($this->profilAChange($infosCUI)) {
// mise à jour du profil local
$this->mettreAJourProfilLocal();
// mise à jour des obs et images
$this->mettreAJourCoordonneesDansObsEtImages();
// re-lecture du nouveau profil local (permet de détecter si la mise à jour s'est mal passée)
$retour = $this->lireCelUtilisateursInfos($login);
} else {
$retour = $infosCUI;
}
} else {
// première connexion au CeL !
$this->initialiserInfosUtilisateur();
$this->affecterDonneesWidgetSaisie($login, $retour);