Subversion Repositories eFlore/Applications.cel

Rev

Rev 3252 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3252 Rev 3260
Line 1... Line 1...
1
// configuration
1
// configuration
2
// prod :
-
 
3
/*var urlRacine = 'https://www.tela-botanica.org',
-
 
4
    config = {
-
 
5
      prod: {
-
 
6
        urlWidgetNavigation : urlRacine + '/widget:cel:saisie2',
-
 
7
        urlBaseAuth : 'https://www.tela-botanica.org/service:annuaire:auth'
-
 
8
      }
-
 
9
    };
-
 
10
  */
-
 
11
// beta (test) :
-
 
12
var urlRacine = 'https://beta.tela-botanica.org',
-
 
13
    config = {
-
 
14
      test: {
-
 
15
        urlWidgetNavigation : urlRacine + '/widget:cel:saisie2',
-
 
16
        urlBaseAuth : 'https://beta.tela-botanica.org/service:annuaire:auth'
-
 
17
      }
-
 
18
    };
-
 
19
 
-
 
20
// dev (localhost):
-
 
21
/*var urlRacine = 'http://localhost',
2
var urlRacine = window.location.origin;
22
    config = {
-
 
23
      local: {
-
 
24
        urlWidgetNavigation : urlRacine + '/widget:cel:saisie2',
-
 
25
        urlBaseAuth : 'https://api.tela-botanica.test/service:annuaire:auth'
-
 
26
      }
-
 
27
    };*/
-
 
28
 
-
 
29
/**
-
 
30
 * Charge la barre de navigation depuis le widget:reseau:navigation dans un <div id="tb-navigation"> , s'il existe
-
 
31
 * dans la page appelante.
-
 
32
 *
-
 
33
 * Nécessite jQuery
-
 
34
 *
-
 
35
 * Utilisation :
-
 
36
 *      - prévoir un <div id="tb-navigation"> dans la page, qui accueillera la barre de navigation.
-
 
37
 *      - si ce <div> contient déjà quelque chose, son contenu sera reporté à la place de la zone ayant l'id "contenu-source"
-
 
38
 *        de la barre de navigation (si une telle zone existe)
-
 
39
 *  - si ce <div> contient un attribut "data-courant" et si la valeur de cet attribut correspond à l'id d'un des éléments
-
 
40
 *    de navigation, alors cet élément aura la classe "active" (pour localiser la page courante dans les menus)
-
 
41
 *  - si ce <div> contient un attribut "data-squelette", alors le widget de navigation sera appelé avec le paramètre
-
 
42
 *    "?squelette=contenu-de-data-squelette"; se reporter à la documentation du widget:reseau:navigation
-
 
43
 */
-
 
Line 44... Line 3...
44
 
3
 
45
$( document ).ready( function() {
-
 
46
  var $div = $( '#tb-navigation' );
-
 
47
  if ( $div ) {
-
 
48
    var squelette = $div.data( 'squelette' ),
-
 
49
        courant   = $div.data( 'courant' ),
4
$( document ).ready( function() {
50
        mode      = $div.data( 'mode' ) || 'prod',
-
 
51
        contenu   = $div.html();
-
 
52
 
-
 
53
    // chargement de la barre
5
  var mode = $( '#tb-observateur' ).data( 'mode' ) || 'prod',
54
    var urlBaseAuth = config[mode]['urlBaseAuth'];
-
 
55
    var urlBarreNavigation = config[mode]['urlWidgetNavigation'];
-
 
56
    urlBarreNavigation += ( squelette ) ? '?squelette=' + squelette : '';
-
 
57
 
-
 
58
    $.ajax({
-
 
59
      url: urlBarreNavigation,
-
 
60
      type: 'get',
-
 
61
      success: function( data ) {
-
 
62
        // remplacement de la zone contenu-source
-
 
63
        var $zoneSource = $div.find( '#contenu-source' );
-
 
64
        if ( $zoneSource ) {
-
 
65
          $zoneSource.replaceWith( contenu );
-
 
66
          // Chargement des informations de connexion SSO
-
 
67
          chargerStatutSSO( urlBaseAuth );
-
 
68
        }
-
 
69
      },
-
 
70
      error: function() {
-
 
71
        $div.html( 'Erreur: impossible de charger la barre de navigation' );
-
 
72
      }
-
 
Line -... Line 6...
-
 
6
      urlBaseAuth = urlRacine + '/service:annuaire:auth';
73
    });
7
 
74
 
8
  chargerStatutSSO( urlBaseAuth, mode );
75
    $( '#deconnexion a' ).click( function() {
9
  $( '#deconnexion a' ).click( function() {
76
      deconnecterUtilisateur( urlBaseAuth );
-
 
77
    });
-
 
78
 
10
    deconnecterUtilisateur( urlBaseAuth, mode );
Line 79... Line 11...
79
  }
11
  });
80
});
12
});
81
 
13
 
82
/**
14
/**
83
 * Interroge le SSO pour connaître le statut de l'utilisateur, et change le menu
15
 * Interroge le SSO pour connaître le statut de l'utilisateur, et change le menu
84
 * à droite de la barre en fonction
16
 * à droite de la barre en fonction
Line 85... Line 17...
85
 */
17
 */
86
function chargerStatutSSO( urlBaseAuth ) {
-
 
87
  var urlAuth = urlBaseAuth + '/identite';
18
function chargerStatutSSO( urlBaseAuth, mode ) {
88
 
-
 
89
  if( 'local' !== $( '#tb-navigation' ).data( 'mode' ) ) {
19
  var urlAuth = urlBaseAuth + '/identite';
90
 
20
 
91
    connexion( urlAuth, true );
21
  if( 'local' !== mode ) {
92
 
22
    connexion( urlAuth, true );
93
  } else {
23
  } else {
94
    urlAuth ='http://localhost/widget:cel:modules/saisie2/test-token.json';
24
    urlAuth = urlRacine + '/widget:cel:modules/apa/test-token.json';
95
    $( '#connexion' ).click( function() {
25
    $( '#connexion' ).click( function() {
96
      connexion( urlAuth, true );
26
      connexion( urlAuth, true );
Line 97... Line 27...
97
      return false;
27
      return false;
98
    });
28
    });
99
  }
29
  }
100
}
30
}
101
 
31
 
102
/**
32
/**
103
 * Déconnecte l'utilisateur du SSO
33
 * Déconnecte l'utilisateur du SSO
104
 */
34
 */
105
function deconnecterUtilisateur( urlBaseAuth ) {
35
function deconnecterUtilisateur( urlBaseAuth, mode ) {
Line 156... Line 86...
156
    idUtilisateur = jetonDecode.id;
86
    idUtilisateur = jetonDecode.id;
157
    nomComplet    = jetonDecode.intitule;
87
    nomComplet    = jetonDecode.intitule;
158
    courriel      = jetonDecode.sub;
88
    courriel      = jetonDecode.sub;
159
    prenom        = jetonDecode.prenom;
89
    prenom        = jetonDecode.prenom;
160
    nom           = jetonDecode.nom;
90
    nom           = jetonDecode.nom;
161
 
-
 
162
    $( '#courriel, #courriel_confirmation' ).attr( 'disabled', 'disabled' );
91
    $( '#courriel, #courriel_confirmation' ).attr( 'disabled', 'disabled' );
163
    $( '#prenom' ).attr( 'disabled', 'disabled' );
92
    $( '#prenom' ).attr( 'disabled', 'disabled' );
164
    $( '#nom' ).attr( 'disabled', 'disabled' );
93
    $( '#nom' ).attr( 'disabled', 'disabled' );
165
    $( '#bouton-connexion, #creation-compte' ).addClass( 'hidden' );
94
    $( '#bouton-connexion, #creation-compte' ).addClass( 'hidden' );
166
    $( '#utilisateur-connecte, #anonyme, #zone-courriel-confirmation, #zone-prenom-nom' ).removeClass( 'hidden' );
95
    $( '#utilisateur-connecte, #anonyme, #zone-courriel-confirmation, #zone-prenom-nom' ).removeClass( 'hidden' );
167
    $( '#date-releve' ).focus();
96
    $( '#date-releve' ).focus();
168
  }
97
  }
169
 
-
 
170
  $( '.warning' ).remove();
98
  $( '.warning' ).remove();
171
  $( '#nom-complet' ).html( nomComplet );
99
  $( '#nom-complet' ).html( nomComplet );
172
  $( '#courriel, #courriel_confirmation' ).val( courriel );
100
  $( '#courriel, #courriel_confirmation' ).val( courriel );
173
  $( '#id_utilisateur' ).val( idUtilisateur );
101
  $( '#id_utilisateur' ).val( idUtilisateur );
174
  $( '#prenom' ).val( prenom );
102
  $( '#prenom' ).val( prenom );
Line 182... Line 110...
182
function decoderJeton( jeton ) {
110
function decoderJeton( jeton ) {
183
  parts = jeton.split( '.' );
111
  parts = jeton.split( '.' );
184
  payload = parts[1];
112
  payload = parts[1];
185
  payload = b64d( payload );
113
  payload = b64d( payload );
186
  payload = JSON.parse( payload, true );
114
  payload = JSON.parse( payload, true );
187
 
-
 
188
  return payload;
115
  return payload;
189
}
116
}
Line 190... Line 117...
190
 
117
 
191
/**
118
/**
Line 199... Line 126...
199
 
126
 
200
    for ( var i = 0; i < padlen; i++ ) {
127
    for ( var i = 0; i < padlen; i++ ) {
201
      input += '=';
128
      input += '=';
202
    }
129
    }
203
  }
-
 
204
 
130
  }
205
  input = input.replace( '-', '+' );
131
  input = input.replace( '-', '+' );
206
  input = input.replace( '_', '/' );
-
 
207
 
132
  input = input.replace( '_', '/' );
208
  return atob( input );
133
  return atob( input );