Subversion Repositories Applications.reseau

Rev

Rev 24 | Rev 63 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 24 Rev 61
Line 1... Line 1...
1
// configuration
1
// configuration
2
var urlRacine = 'http://www.tela-botanica.org',
2
var urlRacine = 'http://www.tela-botanica.org',
3
	config = {
3
	config = {
4
		prod: {
4
		prod: {
5
			urlWidgetNavigation : urlRacine + '/widget:reseau:navigation'
5
			urlWidgetNavigation : urlRacine + '/widget:reseau:navigation',
-
 
6
			urlBaseAuth = 'https://www.tela-botanica.org/service:annuaire:auth'
6
		},
7
		},
7
		test: {
8
		test: {
8
			urlWidgetNavigation : urlRacine + '/widget-test:reseau:navigation',
9
			urlWidgetNavigation : urlRacine + '/widget-test:reseau:navigation',
-
 
10
			urlBaseAuth = 'https://www.tela-botanica.org/service:annuaire-test:auth'
9
		},
11
		},
10
		local: {
12
		local: {
11
			urlWidgetNavigation : 'http://localhost/widget:reseau:navigation'
13
			urlWidgetNavigation : 'http://localhost/widget:reseau:navigation',
-
 
14
			urlBaseAuth = 'https://localhost/service:annuaire:auth'
12
		}
15
		}
13
	};
16
	}
Line 14... Line 17...
14
 
17
 
15
/**
18
/**
16
 * Charge la barre de navigation depuis le widget:reseau:navigation dans un <div id="tb-navigation"> , s'il existe
19
 * Charge la barre de navigation depuis le widget:reseau:navigation dans un <div id="tb-navigation"> , s'il existe
17
 * dans la page appelante.
20
 * dans la page appelante.
Line 55... Line 58...
55
				}
58
				}
56
				// remplacement de la zone contenu-source
59
				// remplacement de la zone contenu-source
57
				var zoneSource = div.find('#contenu-source');
60
				var zoneSource = div.find('#contenu-source');
58
				if (zoneSource) {
61
				if (zoneSource) {
59
					zoneSource.replaceWith(contenu);
62
					zoneSource.replaceWith(contenu);
-
 
63
					// Chargement de sinformations de connexion SSO
-
 
64
					var urlBaseAuth = config[mode]['urlBaseAuth'];
-
 
65
					chargerStatutSSO(urlBaseAuth);
60
				}
66
				}
61
			},
67
			},
62
			error: function() {
68
			error: function() {
63
				div.html('Erreur: impossible de charger la barre de navigation');
69
				div.html('Erreur: impossible de charger la barre de navigation');
64
			}
70
			}
65
		});
71
		});
66
	}
72
	}
67
});
-
 
68
73
});
-
 
74
 
-
 
75
/**
-
 
76
 * 
-
 
77
 */
-
 
78
function chargerStatutSSO(urlBaseAuth) {
-
 
79
	// vérification de l'état au chargement
-
 
80
	var urlAuth = urlBaseAuth + '/identite';
-
 
81
	$.ajax({
-
 
82
	    url: urlAuth,
-
 
83
	    type: "GET",
-
 
84
	    dataType: 'json',
-
 
85
	    xhrFields: {
-
 
86
	         withCredentials: true
-
 
87
	    }
-
 
88
	}).done(function(data) {
-
 
89
		// connecté
-
 
90
		definirUtilisateur(data.token);
-
 
91
	});
-
 
92
}
-
 
93
 
-
 
94
function definirUtilisateur(jeton) {
-
 
95
	var nomComplet = '';
-
 
96
	if (jeton != undefined) {
-
 
97
		// décodage jeton
-
 
98
		var jetonDecode = decoderJeton(jeton);
-
 
99
		nomComplet = jetonDecode.intitule;
-
 
100
	}
-
 
101
	// affichage
-
 
102
	$('#bouton-connexion').hide();
-
 
103
	$('#utilisateur-connecte').show();
-
 
104
	$('#nom-complet').html(nomComplet);
-
 
105
}
-
 
106
 
-
 
107
/**
-
 
108
 * Décodage à l'arrache d'un jeton JWT, ATTENTION CONSIDERE QUE LE
-
 
109
 * JETON EST VALIDE, ne pas décoder n'importe quoi - pas trouvé de lib simple
-
 
110
 * Si pb de cross-browser, tenter ceci : https://code.google.com/p/javascriptbase64/
-
 
111
 * ou ceci : https://code.google.com/p/crypto-js
-
 
112
 */
-
 
113
function decoderJeton(jeton) {
-
 
114
    parts = jeton.split('.');
-
 
115
    payload = parts[1];
-
 
116
    payload = atob(payload);
-
 
117
    payload = JSON.parse(payload, true);
-
 
118
 
-
 
119
    return payload;
-
 
120
}
-
 
121