Line 92... |
Line 92... |
92 |
// récupération de l'utilisateur
|
92 |
// récupération de l'utilisateur
|
93 |
$courriel = $donneesJeton["sub"];
|
93 |
$courriel = $donneesJeton["sub"];
|
Line 94... |
Line 94... |
94 |
|
94 |
|
95 |
// lecture des infos dans l'annuaire (relou mais nécessaire pour la copie dans la table Personnes de CoeL)
|
95 |
// lecture des infos dans l'annuaire (relou mais nécessaire pour la copie dans la table Personnes de CoeL)
|
- |
|
96 |
$infosAnnuaire = $this->obtenirInfosAnnuaire($courriel);
|
96 |
$infosAnnuaire = $this->obtenirInfosAnnuaire($courriel);
|
97 |
$infosAnnuaire['courriel'] = $courriel;
|
97 |
$this->setInfosAnnuaire($infosAnnuaire);
|
98 |
$this->setInfosAnnuaire($infosAnnuaire);
|
Line 98... |
Line 99... |
98 |
//echo "Infos Annu: "; var_dump($infosAnnuaire);
|
99 |
//echo "Infos Annu: "; var_dump($infosAnnuaire);
|
99 |
|
100 |
|
Line 105... |
Line 106... |
105 |
if (!is_null($infosAnnuaire) && $this->avoirBesoinMiseAJour($utilisateur_existant)) {
|
106 |
if (!is_null($infosAnnuaire) && $this->avoirBesoinMiseAJour($utilisateur_existant)) {
|
106 |
$this->debug[] = "Besoin d'une mise à jour";
|
107 |
$this->debug[] = "Besoin d'une mise à jour";
|
Line 107... |
Line 108... |
107 |
|
108 |
|
108 |
$presence_dans_coel = ($utilisateur_existant != false); // si on l'a trouvé juste au dessus
|
109 |
$presence_dans_coel = ($utilisateur_existant != false); // si on l'a trouvé juste au dessus
|
109 |
$this->debug[] = "Presence: $presence_dans_coel";
|
110 |
$this->debug[] = "Presence: $presence_dans_coel";
|
110 |
$mot_de_passe_sha1 = $infosAnnuaire['pass'];
|
111 |
//$mot_de_passe_sha1 = $infosAnnuaire['pass'];
|
Line 111... |
Line 112... |
111 |
//echo "MDP: " .$mot_de_passe_sha1;
|
112 |
//echo "MDP: " .$mot_de_passe_sha1;
|
112 |
|
113 |
|
113 |
if ($presence_dans_coel) {
|
114 |
if ($presence_dans_coel) {
|
114 |
// Nécessite de faire une mise à jour
|
115 |
// Nécessite de faire une mise à jour
|
115 |
$this->debug[] = "Mise à jour de l'utilisateur {$infosAnnuaire['id']}";
|
116 |
$this->debug[] = "Mise à jour de l'utilisateur {$infosAnnuaire['id']}";
|
116 |
$this->mettreAJourUtilisateur($courriel, $mot_de_passe_sha1, $infosAnnuaire);
|
117 |
$this->mettreAJourUtilisateur($courriel, $infosAnnuaire);
|
117 |
// ci-dessous : ne pas caster en int car GWT attend une String (le con !)
|
118 |
// ci-dessous : ne pas caster en int car GWT attend une String (le con !)
|
118 |
$utilisateur_existant['licence'] = $this->recupererLicenceUtilisateur($infosAnnuaire['id']);
|
119 |
$utilisateur_existant['licence'] = $this->recupererLicenceUtilisateur($infosAnnuaire['id']);
|
119 |
} else {
|
120 |
} else {
|
120 |
// Nécessite d'ajouter le nouvel utilisateur
|
121 |
// Nécessite d'ajouter le nouvel utilisateur
|
121 |
$this->debug[] = "Ajout d'une nouvel utilisateur";
|
122 |
$this->debug[] = "Ajout d'une nouvel utilisateur";
|
122 |
$this->ajouterUtilisateurACoel($infosAnnuaire, $mot_de_passe_sha1);
|
123 |
$this->ajouterUtilisateurACoel($infosAnnuaire);
|
123 |
// rechargement après l'avoir ajouté (un peu nul)
|
124 |
// rechargement après l'avoir ajouté (un peu nul)
|
124 |
$utilisateur_existant = $this->chargerUtilisateur($courriel);
|
125 |
$utilisateur_existant = $this->chargerUtilisateur($courriel);
|
Line 228... |
Line 229... |
228 |
}
|
229 |
}
|
Line 229... |
Line 230... |
229 |
|
230 |
|
230 |
/**
|
231 |
/**
|
231 |
* Met à jour les données de l'utilisateur dans la table CoeL Personnes
|
232 |
* Met à jour les données de l'utilisateur dans la table CoeL Personnes
|
232 |
*/
|
233 |
*/
|
233 |
protected function mettreAJourUtilisateur($login, $mot_de_passe_sha1, $infos) {
|
234 |
protected function mettreAJourUtilisateur($login, $infos) {
|
234 |
try {
|
235 |
try {
|
235 |
$cp_fmt_nom_complet = $infos['prenom'].' '.$infos['nom'];
|
236 |
$cp_fmt_nom_complet = $infos['prenom'].' '.$infos['nom'];
|
236 |
$requete = ''
|
237 |
$requete = ''
|
237 |
. 'UPDATE coel_personne'
|
238 |
. 'UPDATE coel_personne'
|
238 |
. " SET cp_id_personne = '{$infos['id']}', "
|
239 |
. " SET cp_id_personne = '{$infos['id']}', "
|
239 |
. " cp_fmt_nom_complet = '$cp_fmt_nom_complet', cp_prenom = '{$infos['prenom']}', cp_nom = '{$infos['nom']}', "
|
240 |
. " cp_fmt_nom_complet = '$cp_fmt_nom_complet', cp_prenom = '{$infos['prenom']}', cp_nom = '{$infos['nom']}', "
|
240 |
. " cp_code_postal = '{$infos['code_postal']}', cp_ville = '{$infos['ville']}', cp_truk_courriel = '{$infos['courriel']}', "
|
241 |
. " cp_code_postal = '{$infos['code_postal']}', cp_ville = '{$infos['ville']}', cp_truk_courriel = '{$infos['courriel']}', "
|
241 |
. " cp_login = '{$infos['courriel']}', cp_mot_de_passe = '$mot_de_passe_sha1', cp_ce_annuaire = '{$infos['id']}' "
|
242 |
. " cp_login = '{$infos['courriel']}', cp_ce_annuaire = '{$infos['id']}' "
|
242 |
. " WHERE cp_login = '$login' "
|
- |
|
243 |
//. " AND cp_mot_de_passe = '{$infos['mot_de_passe']}' " // WTF ?
|
243 |
. " WHERE cp_login = '$login' "
|
Line 244... |
Line 244... |
244 |
;
|
244 |
;
|
245 |
|
245 |
|
246 |
// Ajout des données
|
246 |
// Ajout des données
|
Line 284... |
Line 284... |
284 |
}
|
284 |
}
|
Line 285... |
Line 285... |
285 |
|
285 |
|
286 |
/**
|
286 |
/**
|
287 |
* Ajoute une copie de l'utilisateur dans la table CoeL Personnes
|
287 |
* Ajoute une copie de l'utilisateur dans la table CoeL Personnes
|
288 |
*/
|
288 |
*/
|
289 |
protected function ajouterUtilisateurACoel($infos, $mot_de_passe_sha1) {
|
289 |
protected function ajouterUtilisateurACoel($infos) {
|
290 |
try {
|
290 |
try {
|
291 |
// Construction de la requête d'ajout
|
291 |
// Construction de la requête d'ajout
|
292 |
// Notes : pour rester compatibles avec l'annuaire de Tela, les utilisateurs sont ajoutés directement avec l'id
|
292 |
// Notes : pour rester compatibles avec l'annuaire de Tela, les utilisateurs sont ajoutés directement avec l'id
|
- |
|
293 |
// de l'annuaire Tela. Dans CoelPersonne, les personnes qui ne sont pas utilisateur sont ajoutés avec un id supérieur à 100 000
|
- |
|
294 |
// Notes 2017 : on ne devrait plus stocker les mots de passe dans la table coel_personne, et on ne devrait plus
|
293 |
// de l'annuaire Tela. Dans CoelPersonne, les personnes qui ne sont pas utilisateur sont ajoutés avec un id supérieur à 100 000
|
295 |
// considérer que la base de données de l'annuaire se trouve sur le même serveur.
|
294 |
$cp_fmt_nom_complet = $infos['prenom'].' '.$infos['nom'];
|
296 |
$cp_fmt_nom_complet = $infos['prenom'].' '.$infos['nom'];
|
295 |
$cp_mark_licence = '0';
|
297 |
$cp_mark_licence = '0';
|
296 |
// si un utilisateur a changé son email dans un compte TB existant, une ligne avec son ID existera déjà et /i
|
298 |
// si un utilisateur a changé son email dans un compte TB existant, une ligne avec son ID existera déjà et /i
|
297 |
// => on fait un REPLACE (attention à la compatibilité !)
|
299 |
// => on fait un REPLACE (attention à la compatibilité !)
|
298 |
$requete = 'REPLACE INTO coel_personne '.
|
300 |
$requete = 'REPLACE INTO coel_personne '.
|
299 |
' (cp_id_personne, cp_fmt_nom_complet, cp_prenom, cp_nom, cp_code_postal, '.
|
301 |
' (cp_id_personne, cp_fmt_nom_complet, cp_prenom, cp_nom, cp_code_postal, '.
|
300 |
' cp_ville, cp_truk_courriel, cp_login, cp_mot_de_passe, cp_ce_annuaire, cp_mark_licence) '.
|
302 |
' cp_ville, cp_truk_courriel, cp_login, cp_ce_annuaire, cp_mark_licence) '.
|
301 |
"VALUES ('{$infos['id']}', '$cp_fmt_nom_complet', '{$infos['prenom']}', '{$infos['nom']}', ".
|
303 |
"VALUES ('{$infos['id']}', '$cp_fmt_nom_complet', '{$infos['prenom']}', '{$infos['nom']}', ".
|
302 |
"'{$infos['code_postal']}', '{$infos['ville']}', '{$infos['courriel']}', '{$infos['courriel']}', '".$mot_de_passe_sha1."', ".
|
304 |
"'{$infos['code_postal']}', '{$infos['ville']}', '{$infos['courriel']}', '{$infos['courriel']}', ".
|
303 |
"'{$infos['id']}', $cp_mark_licence) ";
|
305 |
"'{$infos['id']}', $cp_mark_licence) ";
|
304 |
//$this->debug[] = $requete;
|
306 |
//$this->debug[] = $requete;
|
- |
|
307 |
// Ajout des données
|
305 |
// Ajout des données
|
308 |
var_dump($requete);
|
306 |
$resultat = $this->bdd->exec($requete);
|
309 |
$resultat = $this->bdd->exec($requete);
|
307 |
if ($resultat === false) {
|
310 |
if ($resultat === false) {
|
308 |
$this->debug[] = "Utilisateur NON ajouté dans coel_personne car la requête a échouée.";
|
311 |
$this->debug[] = "Utilisateur NON ajouté dans coel_personne car la requête a échouée.";
|
309 |
} else {
|
312 |
} else {
|
Line 315... |
Line 318... |
315 |
}
|
318 |
}
|
316 |
}
|
319 |
}
|
Line 317... |
Line 320... |
317 |
|
320 |
|
318 |
/**
|
321 |
/**
|
- |
|
322 |
* Appelle l'annuaire pour connaître tous les détails de l'utilisateur de courriel $login
|
319 |
* Appelle l'annuaire pour connaître tous les détails de l'utilisateur de courriel $login
|
323 |
* @TODO gérer le pseudo un jour !
|
320 |
*/
|
324 |
*/
|
321 |
protected function obtenirInfosAnnuaire($login) {
|
325 |
protected function obtenirInfosAnnuaire($login) {
|
322 |
$url_annuaire = $this->config['coel']['urlAnnuaire'];
|
326 |
$url_annuaire = $this->config['coel']['urlAnnuaire'];
|
323 |
$login_annuaire = $this->config['coel']['loginAnnuaire'];
|
327 |
$login_annuaire = $this->config['coel']['loginAnnuaire'];
|
Line 330... |
Line 334... |
330 |
$url_annuaire = $protocole . $login_annuaire . ':' . $mdp_annuaire . "@" . $reste_adresse;
|
334 |
$url_annuaire = $protocole . $login_annuaire . ':' . $mdp_annuaire . "@" . $reste_adresse;
|
331 |
$url_annuaire .= '/' . $login;
|
335 |
$url_annuaire .= '/' . $login;
|
332 |
$url_annuaire .= '/xml'; // @TODO un jour, faire en sorte que ça lise du JSON
|
336 |
$url_annuaire .= '/xml'; // @TODO un jour, faire en sorte que ça lise du JSON
|
Line 333... |
Line 337... |
333 |
|
337 |
|
- |
|
338 |
$resultat_annuaire = file_get_contents($url_annuaire);
|
334 |
$resultat_annuaire = file_get_contents($url_annuaire);
|
339 |
// valeurs par défaut pour éviter des warning
|
- |
|
340 |
$tableau_annuaire = array(
|
- |
|
341 |
"nom" => "",
|
- |
|
342 |
"prenom" => "",
|
- |
|
343 |
"ville" => "",
|
- |
|
344 |
"code_postal" => "",
|
- |
|
345 |
"courriel" => ""
|
335 |
$tableau_annuaire = null;
|
346 |
);
|
336 |
if ($xml_utilisateur = simplexml_load_string($resultat_annuaire)) {
|
347 |
if ($xml_utilisateur = simplexml_load_string($resultat_annuaire)) {
|
337 |
// La fonction a retourné un objet
|
348 |
// La fonction a retourné un objet
|
338 |
foreach ($xml_utilisateur->children() as $key => $val) {
|
349 |
foreach ($xml_utilisateur->children() as $key => $val) {
|
339 |
if ((string) $val != '') {
|
350 |
if ((string) $val != '') {
|
Line 388... |
Line 399... |
388 |
*
|
399 |
*
|
389 |
* @param String $jeton un jeton JWT
|
400 |
* @param String $jeton un jeton JWT
|
390 |
* @return true si le jeton est vérifié, false sinon
|
401 |
* @return true si le jeton est vérifié, false sinon
|
391 |
*/
|
402 |
*/
|
392 |
protected function verifierJeton($jeton) {
|
403 |
protected function verifierJeton($jeton) {
|
393 |
$urlServiceVerification =$this->config['coel']['urlServiceBaseAuth'] . "verifierjeton";
|
404 |
$urlServiceVerification = $this->config['coel']['urlServiceBaseAuth'] . "verifierjeton";
|
394 |
$urlServiceVerification .= "?token=" . $jeton;
|
405 |
$urlServiceVerification .= "?token=" . $jeton;
|
395 |
|
406 |
|
396 |
// file_get_contents râle si le certificat HTTPS est auto-signé
|
407 |
// file_get_contents râle si le certificat HTTPS est auto-signé
|
397 |
//$retour = file_get_contents($urlServiceVerification);
|
408 |
//$retour = file_get_contents($urlServiceVerification);
|
Line 398... |
Line 409... |
398 |
|
409 |
|
399 |
// curl avec les options suivantes ignore le pb de certificat (pour tester en local)
|
410 |
// curl avec les options suivantes ignore le pb de certificat (pour tester en local)
|