94,6 → 94,7 |
|
// lecture des infos dans l'annuaire (relou mais nécessaire pour la copie dans la table Personnes de CoeL) |
$infosAnnuaire = $this->obtenirInfosAnnuaire($courriel); |
$infosAnnuaire['courriel'] = $courriel; |
$this->setInfosAnnuaire($infosAnnuaire); |
//echo "Infos Annu: "; var_dump($infosAnnuaire); |
|
107,19 → 108,19 |
|
$presence_dans_coel = ($utilisateur_existant != false); // si on l'a trouvé juste au dessus |
$this->debug[] = "Presence: $presence_dans_coel"; |
$mot_de_passe_sha1 = $infosAnnuaire['pass']; |
//$mot_de_passe_sha1 = $infosAnnuaire['pass']; |
//echo "MDP: " .$mot_de_passe_sha1; |
|
if ($presence_dans_coel) { |
// Nécessite de faire une mise à jour |
$this->debug[] = "Mise à jour de l'utilisateur {$infosAnnuaire['id']}"; |
$this->mettreAJourUtilisateur($courriel, $mot_de_passe_sha1, $infosAnnuaire); |
$this->mettreAJourUtilisateur($courriel, $infosAnnuaire); |
// ci-dessous : ne pas caster en int car GWT attend une String (le con !) |
$utilisateur_existant['licence'] = $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->ajouterUtilisateurACoel($infosAnnuaire); |
// rechargement après l'avoir ajouté (un peu nul) |
$utilisateur_existant = $this->chargerUtilisateur($courriel); |
} |
230,7 → 231,7 |
/** |
* Met à jour les données de l'utilisateur dans la table CoeL Personnes |
*/ |
protected function mettreAJourUtilisateur($login, $mot_de_passe_sha1, $infos) { |
protected function mettreAJourUtilisateur($login, $infos) { |
try { |
$cp_fmt_nom_complet = $infos['prenom'].' '.$infos['nom']; |
$requete = '' |
238,9 → 239,8 |
. " 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']}' " |
. " cp_login = '{$infos['courriel']}', cp_ce_annuaire = '{$infos['id']}' " |
. " WHERE cp_login = '$login' " |
//. " AND cp_mot_de_passe = '{$infos['mot_de_passe']}' " // WTF ? |
; |
|
// Ajout des données |
286,11 → 286,13 |
/** |
* Ajoute une copie de l'utilisateur dans la table CoeL Personnes |
*/ |
protected function ajouterUtilisateurACoel($infos, $mot_de_passe_sha1) { |
protected function ajouterUtilisateurACoel($infos) { |
try { |
// Construction de la requête d'ajout |
// Notes : pour rester compatibles avec l'annuaire de Tela, les utilisateurs sont ajoutés directement avec l'id |
// de l'annuaire Tela. Dans CoelPersonne, les personnes qui ne sont pas utilisateur sont ajoutés avec un id supérieur à 100 000 |
// Notes 2017 : on ne devrait plus stocker les mots de passe dans la table coel_personne, et on ne devrait plus |
// considérer que la base de données de l'annuaire se trouve sur le même serveur. |
$cp_fmt_nom_complet = $infos['prenom'].' '.$infos['nom']; |
$cp_mark_licence = '0'; |
// si un utilisateur a changé son email dans un compte TB existant, une ligne avec son ID existera déjà et /i |
297,12 → 299,13 |
// => on fait un REPLACE (attention à la compatibilité !) |
$requete = 'REPLACE INTO coel_personne '. |
' (cp_id_personne, 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) '. |
' cp_ville, cp_truk_courriel, cp_login, cp_ce_annuaire, cp_mark_licence) '. |
"VALUES ('{$infos['id']}', '$cp_fmt_nom_complet', '{$infos['prenom']}', '{$infos['nom']}', ". |
"'{$infos['code_postal']}', '{$infos['ville']}', '{$infos['courriel']}', '{$infos['courriel']}', '".$mot_de_passe_sha1."', ". |
"'{$infos['code_postal']}', '{$infos['ville']}', '{$infos['courriel']}', '{$infos['courriel']}', ". |
"'{$infos['id']}', $cp_mark_licence) "; |
//$this->debug[] = $requete; |
// Ajout des données |
var_dump($requete); |
$resultat = $this->bdd->exec($requete); |
if ($resultat === false) { |
$this->debug[] = "Utilisateur NON ajouté dans coel_personne car la requête a échouée."; |
317,6 → 320,7 |
|
/** |
* Appelle l'annuaire pour connaître tous les détails de l'utilisateur de courriel $login |
* @TODO gérer le pseudo un jour ! |
*/ |
protected function obtenirInfosAnnuaire($login) { |
$url_annuaire = $this->config['coel']['urlAnnuaire']; |
332,7 → 336,14 |
$url_annuaire .= '/xml'; // @TODO un jour, faire en sorte que ça lise du JSON |
|
$resultat_annuaire = file_get_contents($url_annuaire); |
$tableau_annuaire = null; |
// valeurs par défaut pour éviter des warning |
$tableau_annuaire = array( |
"nom" => "", |
"prenom" => "", |
"ville" => "", |
"code_postal" => "", |
"courriel" => "" |
); |
if ($xml_utilisateur = simplexml_load_string($resultat_annuaire)) { |
// La fonction a retourné un objet |
foreach ($xml_utilisateur->children() as $key => $val) { |