Rev 101 | Blame | Compare with Previous | Last modification | View Log | RSS feed
$(document).ready(function() {// infobulles$('[data-toggle="tooltip"]').tooltip();// trucage ordre des champs pour passer du login au mdp sans passer// par le lien "oublié ?" => pas standard, c'est mal - @TODO faire mieux// Ordre : login => mdp => oublie => s'inscrire$('#login').keypress(function(e) {if(e.keyCode == 9) {if(! e.shiftKey) {$('#mdp').focus();return false;}}});$('#mdp').keypress(function(e) {if(e.keyCode == 9) {if(e.shiftKey) {$('#login').focus();} else {$('#mdp-oublie').focus();}return false;}});$('#mdp-oublie').keypress(function(e) {if(e.keyCode == 9) {if(e.shiftKey) {$('#mdp').focus();} else {$('#lien-inscription').focus();}}return false;});$('#lien-inscription').keypress(function(e) {if(e.keyCode == 9) {if(e.shiftKey) {$('#mdp-oublie').focus();return false;}}});// partenaire avec lequel se connecter$('#liste-fournisseurs ul li a').click(function() {$('#liste-fournisseurs ul li a').attr('data-focus', 'false');$(this).attr('data-focus', 'true');var nomPartenaire = $(this).data('nom-partenaire'),urlOubliMdp = $(this).data('url-oubli-mdp'),loginLegende = $(this).data('login-legende'),loginTypeChamp = $(this).data('login-type-champ');$('#nom-partenaire').html(nomPartenaire);$('#mdp-oublie').attr('href', urlOubliMdp);$('#login').attr('type', loginTypeChamp);$('#login').attr('placeholder', loginLegende);});// Connexion au SSO$('#formulaire-identification').submit(function() {connecterUtilisateur();return false;});// Déconnexion du SSO$('#deconnexion').click(function() {deconnecterUtilisateur();return false;});// vérification de l'état au chargementvar 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().toLowerCase(),mdp = $('#mdp').val();if (login == '' || mdp == '') {alert('Veuillez entrer votre login et votre mot de passe');} else {var urlAuth = baseUrlAuth + '/connexion?login=' + encodeURIComponent(login) + '&password=' + encodeURIComponent(mdp);// partenaire ?var codePartenaire = $('#liste-fournisseurs a[data-focus="true"]').data('code-partenaire');if (codePartenaire != undefined) {urlAuth += '&partner=' + codePartenaire;}$.ajax({url: urlAuth,type: "GET",dataType: 'json',xhrFields: {withCredentials: true}}).done(function(data) {rediriger();definirUtilisateur(data.token);afficherPanneauBienvenue();masquerErreurs();}).fail(function(error) {afficherErreurLogin();});}}/*** Déconnecte l'utilisateur du SSO*/function deconnecterUtilisateur() {var urlAuth = baseUrlAuth + '/deconnexion';$.ajax({url: urlAuth,type: "GET",dataType: 'json',xhrFields: {withCredentials: true}}).done(function(data) {rediriger();definirUtilisateur();afficherPanneauIdentification();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();});}/*** 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}}function definirUtilisateur(jeton) {var nomComplet = '';if (jeton != undefined) {// décodage jetonvar jetonDecode = decoderJeton(jeton);nomComplet = jetonDecode.intitule;email = jetonDecode.sub;}// affichage$('#nom-complet').html(nomComplet);$('#nom-complet').attr('title', email);}/*** Décodage "url-safe" des chaînes base64 retournées par le SSO (lib jwt)*/function b64d(input) {var remainder = input.length % 4;if (remainder != 0) {var padlen = 4 - remainder;for (var i=0; i < padlen; i++) {input += '=';}}input = input.replace('-', '+');input = input.replace('_', '/');return atob(input);}/*** 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*/function decoderJeton(jeton) {parts = jeton.split('.');payload = parts[1];payload = b64d(payload);payload = JSON.parse(payload, true);return payload;}/*** 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 afficherPanneauIdentification() {$('#panneau-identification').show();$('#panneau-bienvenue').hide();$('.boite-centre').addClass('reduite');}function afficherPanneauBienvenue() {$('#panneau-identification').hide();$('#panneau-bienvenue').show();$('.boite-centre').removeClass('reduite');}function afficherErreurLogin() {$('#info-erreur-login').show();}function afficherErreurServeur() {$('#info-erreur-serveur').show();}function masquerErreurs() {$('.info-erreur').hide();}