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); |