Rev 3271 | Blame | Last modification | View Log | RSS feed
// configurationvar urlRacine = window.location.origin;$( document ).ready( function() {$( '#form-observateur' )[0].reset();var mode = $( '#tb-observateur' ).data( 'mode' ) || 'prod',urlBaseAuth = urlRacine + '/service:annuaire:auth';chargerStatutSSO( urlBaseAuth, mode );$( '#deconnexion a' ).click( function() {deconnecterUtilisateur( urlBaseAuth, mode );});});/*** Interroge le SSO pour connaître le statut de l'utilisateur, et change le menu* à droite de la barre en fonction*/function chargerStatutSSO( urlBaseAuth, mode ) {var urlAuth = urlBaseAuth + '/identite';if( 'local' !== mode ) {connexion( urlAuth, true );} else {urlAuth = urlRacine + '/widget:cel:modules/saisie2/test-token.json';$( '#connexion' ).click( function() {connexion( urlAuth, true );return false;});}}/*** Déconnecte l'utilisateur du SSO*/function deconnecterUtilisateur( urlBaseAuth, mode ) {if( 'local' === mode ) {definirUtilisateur( undefined );window.location.reload();return;}var urlAuth = urlBaseAuth + '/deconnexion';connexion( urlAuth, false );}function connexion( urlAuth, connexionOnOff ) {$.ajax({url: urlAuth,type: "GET",dataType: 'json',xhrFields: {withCredentials: true}}).done( function( data ) {if( connexionOnOff ) {// connectédefinirUtilisateur( data.token );} else {definirUtilisateur();window.location.reload();}}).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();});}function definirUtilisateur( jeton ) {var idUtilisateur = '',nomComplet = '',courriel = '',pseudo = '',prenom = '',nom = '';// affichageif ( undefined !== jeton ) {// décodage jetonvar jetonDecode = decoderJeton( jeton );// console.log(jetonDecode);idUtilisateur = jetonDecode.id;nomComplet = jetonDecode.intitule;courriel = jetonDecode.sub;pseudo = jetonDecode.pseudo;prenom = jetonDecode.prenom;nom = jetonDecode.nom;$( '#courriel, #courriel_confirmation' ).attr( 'disabled', 'disabled' );$( '#prenom' ).attr( 'disabled', 'disabled' );$( '#nom' ).attr( 'disabled', 'disabled' );$( '#bouton-connexion, #creation-compte' ).addClass( 'hidden' );$( '#utilisateur-connecte, #anonyme, #zone-courriel-confirmation, #zone-prenom-nom' ).removeClass( 'hidden' );$( '#date-releve' ).focus();}$( '.warning' ).remove();$( '#nom-complet' ).html( nomComplet );$( '#courriel, #courriel_confirmation' ).val( courriel );$( '#profil-utilisateur a' ).attr( 'href', urlProfilUtilisateur( pseudo ) );$( '#id_utilisateur' ).val( idUtilisateur );$( '#prenom' ).val( prenom );$( '#nom' ).val( nom );}/*** 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;}/*** Décodage "url-safe" des chaînes base64 retournées par le SSO (lib jwt)*/function b64d( input ) {var remainder = input.length % 4;if ( 0 !== remainder ) {var padlen = 4 - remainder;for ( var i = 0; i < padlen; i++ ) {input += '=';}}input = input.replace( '-', '+' );input = input.replace( '_', '/' );return atob( input );}function urlProfilUtilisateur( pseudo ) {var mode = $( '#tb-observateur' ).data( 'mode' ) || 'prod';var urlPart = ( 'prod' === mode ) ? 'www.tela-botanica.org/' : 'beta.tela-botanica.org/test/';return 'https://' + urlPart + 'membres/' + pseudo.toLowerCase().replace( ' ', '-' );}