52,35 → 52,49 |
|
// Connexion au SSO |
$('#formulaire-identification').submit(function() { |
var login = $('#login').val(), |
mdp = $('#mdp').val(); |
if (login == '' || mdp == '') { |
alert('Veuillez entrer votre login et votre mot de passe'); |
} else { |
var urlAuth = baseUrlAuth + '/connexion?login=' + login + '&password=' + mdp; |
$.ajax({ |
url: urlAuth, |
type: "GET", |
dataType: 'json', |
xhrFields: { |
withCredentials: true |
} |
}) |
.done(function(data) { |
definirUtilisateur(data.token); |
afficherPanneauBienvenue(); |
masquerErreurs(); |
}) |
.fail(function(error) { |
afficherErreurLogin(); |
}); |
} |
connecterUtilisateur(); |
return false; |
}); |
|
// Déconnexion du SSO |
$('#deconnexion').click(function() { |
var urlAuth = baseUrlAuth + '/deconnexion'; |
deconnecterUtilisateur(); |
return false; |
}); |
|
// vérification de l'état au chargement |
var urlAuth = baseUrlAuth + '/identite'; |
$.ajax({ |
url: urlAuth, |
type: "GET", |
dataType: 'json', |
xhrFields: { |
withCredentials: true |
} |
}).done(function(data) { |
// connecté |
definirUtilisateur(data.token); |
afficherPanneauBienvenue(); |
}) |
.fail(function(error) { |
// non connecté |
afficherPanneauIdentification(); |
}); |
|
// exécuter une action si définie (par ex: déconnexion) |
executerAction(); |
}); |
|
/** |
* Connecte l'utilisateur au SSO |
*/ |
function connecterUtilisateur() { |
var login = $('#login').val(), |
mdp = $('#mdp').val(); |
if (login == '' || mdp == '') { |
alert('Veuillez entrer votre login et votre mot de passe'); |
} else { |
var urlAuth = baseUrlAuth + '/connexion?login=' + login + '&password=' + mdp; |
$.ajax({ |
url: urlAuth, |
type: "GET", |
90,20 → 104,22 |
} |
}) |
.done(function(data) { |
definirUtilisateur(); |
afficherPanneauIdentification(); |
rediriger(); |
definirUtilisateur(data.token); |
afficherPanneauBienvenue(); |
masquerErreurs(); |
}) |
.fail(function(error) { |
// @TODO gérer l'affichage de l'erreur, mais pas facile à placer |
// dans l'interface actuelle sans que ce soit moche |
//afficherErreurServeur(); |
afficherErreurLogin(); |
}); |
return false; |
}); |
} |
} |
|
// vérification de l'état au chargement |
var urlAuth = baseUrlAuth + '/identite'; |
/** |
* Déconnecte l'utilisateur du SSO |
*/ |
function deconnecterUtilisateur() { |
var urlAuth = baseUrlAuth + '/deconnexion'; |
$.ajax({ |
url: urlAuth, |
type: "GET", |
111,61 → 127,88 |
xhrFields: { |
withCredentials: true |
} |
}).done(function(data) { |
// connecté |
definirUtilisateur(data.token); |
afficherPanneauBienvenue(); |
}) |
.done(function(data) { |
rediriger(); |
definirUtilisateur(); |
afficherPanneauIdentification(); |
masquerErreurs(); |
}) |
.fail(function(error) { |
// non connecté |
afficherPanneauIdentification(); |
// @TODO gérer l'affichage de l'erreur, mais pas facile à placer |
// dans l'interface actuelle sans que ce soit moche |
//afficherErreurServeur(); |
}); |
} |
|
function definirUtilisateur(jeton) { |
var nomComplet = ''; |
if (jeton != undefined) { |
// décodage jeton |
var jetonDecode = decoderJeton(jeton); |
nomComplet = jetonDecode.intitule; |
} |
// affichage |
$('#nom-complet').html(nomComplet); |
/** |
* Si la variable "action" est définie (provenant du paramètre GET "origine"), |
* exécute l'action associée (par ex: déconnexion) |
*/ |
function executerAction() { |
switch (action) { |
case "deconnexion": |
deconnecterUtilisateur(); |
break; |
default : |
// on ne fait rien |
} |
} |
|
/** |
* Décodage à l'arrache d'un jeton JWT, ATTENTION CONSIDERE QUE LE |
* JETON EST VALIDE, ne pas décoder n'importe quoi - pas trouvé de lib simple |
* Si pb de cross-browser, tenter ceci : https://code.google.com/p/javascriptbase64/ |
* ou ceci : https://code.google.com/p/crypto-js |
*/ |
function decoderJeton(jeton) { |
parts = jeton.split('.'); |
payload = parts[1]; |
payload = atob(payload); |
payload = JSON.parse(payload, true); |
function definirUtilisateur(jeton) { |
var nomComplet = ''; |
if (jeton != undefined) { |
// décodage jeton |
var jetonDecode = decoderJeton(jeton); |
nomComplet = jetonDecode.intitule; |
} |
// affichage |
$('#nom-complet').html(nomComplet); |
} |
|
return payload; |
} |
/** |
* Décodage à l'arrache d'un jeton JWT, ATTENTION CONSIDERE QUE LE |
* JETON EST VALIDE, ne pas décoder n'importe quoi - pas trouvé de lib simple |
* Si pb de cross-browser, tenter ceci : https://code.google.com/p/javascriptbase64/ |
* ou ceci : https://code.google.com/p/crypto-js |
*/ |
function decoderJeton(jeton) { |
parts = jeton.split('.'); |
payload = parts[1]; |
payload = atob(payload); |
payload = JSON.parse(payload, true); |
|
function afficherPanneauIdentification() { |
$('#panneau-identification').show(); |
$('#panneau-bienvenue').hide(); |
} |
return payload; |
} |
|
function afficherPanneauBienvenue() { |
$('#panneau-identification').hide(); |
$('#panneau-bienvenue').show(); |
/** |
* Si la variable "origine" est définie (provenant du paramètre GET "origine"), |
* redirige l'utilisateur vers cette page |
*/ |
function rediriger() { |
if (origine != '') { |
window.location.href = origine; |
} |
} |
|
function afficherErreurLogin() { |
$('#info-erreur-login').show(); |
} |
function afficherPanneauIdentification() { |
$('#panneau-identification').show(); |
$('#panneau-bienvenue').hide(); |
} |
|
function afficherErreurServeur() { |
$('#info-erreur-serveur').show(); |
} |
function afficherPanneauBienvenue() { |
$('#panneau-identification').hide(); |
$('#panneau-bienvenue').show(); |
} |
|
function masquerErreurs() { |
$('.info-erreur').hide(); |
} |
}); |
function afficherErreurLogin() { |
$('#info-erreur-login').show(); |
} |
|
function afficherErreurServeur() { |
$('#info-erreur-serveur').show(); |
} |
|
function masquerErreurs() { |
$('.info-erreur').hide(); |
} |