Subversion Repositories Applications.reseau

Rev

Rev 72 | Rev 79 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 72 Rev 78
1
$(document).ready(function() {
1
$(document).ready(function() {
2
	// infobulles
2
	// infobulles
3
	$('[data-toggle="tooltip"]').tooltip();
3
	$('[data-toggle="tooltip"]').tooltip();
4
 
4
 
5
	// trucage ordre des champs pour passer du login au mdp sans passer
5
	// trucage ordre des champs pour passer du login au mdp sans passer
6
	// par le lien "oublié ?" => pas standard, c'est mal - @TODO faire mieux
6
	// par le lien "oublié ?" => pas standard, c'est mal - @TODO faire mieux
7
	// Ordre : login => mdp => oublie => s'inscrire
7
	// Ordre : login => mdp => oublie => s'inscrire
8
	$('#login').keypress(function(e) {
8
	$('#login').keypress(function(e) {
9
		if(e.keyCode == 9) {
9
		if(e.keyCode == 9) {
10
			if(! e.shiftKey) {
10
			if(! e.shiftKey) {
11
				$('#mdp').focus();
11
				$('#mdp').focus();
12
				return false;
12
				return false;
13
			}
13
			}
14
		}
14
		}
15
	});
15
	});
16
	$('#mdp').keypress(function(e) {
16
	$('#mdp').keypress(function(e) {
17
		if(e.keyCode == 9) {
17
		if(e.keyCode == 9) {
18
			if(e.shiftKey) {
18
			if(e.shiftKey) {
19
				$('#login').focus();
19
				$('#login').focus();
20
			} else {
20
			} else {
21
				$('#mdp-oublie').focus();
21
				$('#mdp-oublie').focus();
22
			}
22
			}
23
			return false;
23
			return false;
24
		}
24
		}
25
	});
25
	});
26
	$('#mdp-oublie').keypress(function(e) {
26
	$('#mdp-oublie').keypress(function(e) {
27
		if(e.keyCode == 9) {
27
		if(e.keyCode == 9) {
28
			if(e.shiftKey) {
28
			if(e.shiftKey) {
29
				$('#mdp').focus();
29
				$('#mdp').focus();
30
			} else {
30
			} else {
31
				$('#lien-inscription').focus();
31
				$('#lien-inscription').focus();
32
			}
32
			}
33
		}
33
		}
34
		return false;
34
		return false;
35
	});
35
	});
36
	$('#lien-inscription').keypress(function(e) {
36
	$('#lien-inscription').keypress(function(e) {
37
		if(e.keyCode == 9) {
37
		if(e.keyCode == 9) {
38
			if(e.shiftKey) {
38
			if(e.shiftKey) {
39
				$('#mdp-oublie').focus();
39
				$('#mdp-oublie').focus();
40
				return false;
40
				return false;
41
			}
41
			}
42
		}
42
		}
43
	});
43
	});
44
 
44
 
45
	// partenaire avec lequel se connecter
45
	// partenaire avec lequel se connecter
46
	$('#liste-fournisseurs ul li a').click(function() {
46
	$('#liste-fournisseurs ul li a').click(function() {
47
		$('#liste-fournisseurs ul li a').attr('data-focus', 'false');
47
		$('#liste-fournisseurs ul li a').attr('data-focus', 'false');
48
		$(this).attr('data-focus', 'true');
48
		$(this).attr('data-focus', 'true');
49
		var nomPartenaire = $(this).data('nom-partenaire');
49
		var nomPartenaire = $(this).data('nom-partenaire'),
-
 
50
			urlOubliMdp = $(this).data('url-oubli-mdp')
50
		$('#nom-partenaire').html(nomPartenaire);
51
		$('#nom-partenaire').html(nomPartenaire);
-
 
52
		$('#mdp-oublie').attr('href', urlOubliMdp);
51
	});
53
	});
52
 
54
 
53
	// Connexion au SSO
55
	// Connexion au SSO
54
	$('#formulaire-identification').submit(function() {
56
	$('#formulaire-identification').submit(function() {
55
		connecterUtilisateur();
57
		connecterUtilisateur();
56
		return false;
58
		return false;
57
	});
59
	});
58
 
60
 
59
	// Déconnexion du SSO
61
	// Déconnexion du SSO
60
	$('#deconnexion').click(function() {
62
	$('#deconnexion').click(function() {
61
		deconnecterUtilisateur();
63
		deconnecterUtilisateur();
62
		return false;
64
		return false;
63
	});
65
	});
64
 
66
 
65
	// vérification de l'état au chargement
67
	// vérification de l'état au chargement
66
	var urlAuth = baseUrlAuth + '/identite';
68
	var urlAuth = baseUrlAuth + '/identite';
67
	$.ajax({
69
	$.ajax({
68
	    url: urlAuth,
70
	    url: urlAuth,
69
	    type: "GET",
71
	    type: "GET",
70
	    dataType: 'json',
72
	    dataType: 'json',
71
	    xhrFields: {
73
	    xhrFields: {
72
	         withCredentials: true
74
	         withCredentials: true
73
	    }
75
	    }
74
	}).done(function(data) {
76
	}).done(function(data) {
75
		// connecté
77
		// connecté
76
		definirUtilisateur(data.token);
78
		definirUtilisateur(data.token);
77
		afficherPanneauBienvenue();
79
		afficherPanneauBienvenue();
78
	})
80
	})
79
	.fail(function(error) {
81
	.fail(function(error) {
80
		// non connecté
82
		// non connecté
81
		afficherPanneauIdentification();
83
		afficherPanneauIdentification();
82
	});
84
	});
83
 
85
 
84
	// exécuter une action si définie (par ex: déconnexion)
86
	// exécuter une action si définie (par ex: déconnexion)
85
	executerAction();
87
	executerAction();
86
});
88
});
87
 
89
 
88
/**
90
/**
89
 * Connecte l'utilisateur au SSO
91
 * Connecte l'utilisateur au SSO
90
 */
92
 */
91
function connecterUtilisateur() {
93
function connecterUtilisateur() {
92
	var login = $('#login').val(),
94
	var login = $('#login').val(),
93
		mdp = $('#mdp').val();
95
		mdp = $('#mdp').val();
94
	if (login == '' || mdp == '') {
96
	if (login == '' || mdp == '') {
95
		alert('Veuillez entrer votre login et votre mot de passe');
97
		alert('Veuillez entrer votre login et votre mot de passe');
96
	} else {
98
	} else {
97
		var urlAuth = baseUrlAuth + '/connexion?login=' + login + '&password=' + mdp;
99
		var urlAuth = baseUrlAuth + '/connexion?login=' + login + '&password=' + mdp;
-
 
100
		// partenaire ?
-
 
101
		var codePartenaire = $('#liste-fournisseurs a[data-focus="true"]').data('code-partenaire');
-
 
102
		if (codePartenaire != undefined) {
-
 
103
			urlAuth += '&partner=' + codePartenaire;
-
 
104
		}
98
		$.ajax({
105
		$.ajax({
99
		    url: urlAuth,
106
		    url: urlAuth,
100
		    type: "GET",
107
		    type: "GET",
101
		    dataType: 'json',
108
		    dataType: 'json',
102
		    xhrFields: {
109
		    xhrFields: {
103
		         withCredentials: true
110
		         withCredentials: true
104
		    }
111
		    }
105
		})
112
		})
106
		.done(function(data) {
113
		.done(function(data) {
107
			rediriger();
114
			rediriger();
108
			definirUtilisateur(data.token);
115
			definirUtilisateur(data.token);
109
			afficherPanneauBienvenue();
116
			afficherPanneauBienvenue();
110
			masquerErreurs();
117
			masquerErreurs();
111
		})
118
		})
112
		.fail(function(error) {
119
		.fail(function(error) {
113
			afficherErreurLogin();
120
			afficherErreurLogin();
114
		});
121
		});
115
	}
122
	}
116
}
123
}
117
 
124
 
118
/**
125
/**
119
 * Déconnecte l'utilisateur du SSO
126
 * Déconnecte l'utilisateur du SSO
120
 */
127
 */
121
function deconnecterUtilisateur() {
128
function deconnecterUtilisateur() {
122
	var urlAuth = baseUrlAuth + '/deconnexion';
129
	var urlAuth = baseUrlAuth + '/deconnexion';
123
	$.ajax({
130
	$.ajax({
124
	    url: urlAuth,
131
	    url: urlAuth,
125
	    type: "GET",
132
	    type: "GET",
126
	    dataType: 'json',
133
	    dataType: 'json',
127
	    xhrFields: {
134
	    xhrFields: {
128
	         withCredentials: true
135
	         withCredentials: true
129
	    }
136
	    }
130
	})
137
	})
131
	.done(function(data) {
138
	.done(function(data) {
132
		rediriger();
139
		rediriger();
133
		definirUtilisateur();
140
		definirUtilisateur();
134
		afficherPanneauIdentification();
141
		afficherPanneauIdentification();
135
		masquerErreurs();
142
		masquerErreurs();
136
	})
143
	})
137
	.fail(function(error) {
144
	.fail(function(error) {
138
		// @TODO gérer l'affichage de l'erreur, mais pas facile à placer
145
		// @TODO gérer l'affichage de l'erreur, mais pas facile à placer
139
		// dans l'interface actuelle sans que ce soit moche
146
		// dans l'interface actuelle sans que ce soit moche
140
		//afficherErreurServeur();
147
		//afficherErreurServeur();
141
	});
148
	});
142
}
149
}
143
 
150
 
144
/**
151
/**
145
 * Si la variable "action" est définie (provenant du paramètre GET "origine"),
152
 * Si la variable "action" est définie (provenant du paramètre GET "origine"),
146
 * exécute l'action associée (par ex: déconnexion)
153
 * exécute l'action associée (par ex: déconnexion)
147
 */
154
 */
148
function executerAction() {
155
function executerAction() {
149
	switch (action) {
156
	switch (action) {
150
		case "deconnexion":
157
		case "deconnexion":
151
			deconnecterUtilisateur();
158
			deconnecterUtilisateur();
152
			break;
159
			break;
153
		default :
160
		default :
154
			// on ne fait rien
161
			// on ne fait rien
155
	}
162
	}
156
}
163
}
157
 
164
 
158
function definirUtilisateur(jeton) {
165
function definirUtilisateur(jeton) {
159
	var nomComplet = '';
166
	var nomComplet = '';
160
	if (jeton != undefined) {
167
	if (jeton != undefined) {
161
		// décodage jeton
168
		// décodage jeton
162
		var jetonDecode = decoderJeton(jeton);
169
		var jetonDecode = decoderJeton(jeton);
163
		nomComplet = jetonDecode.intitule;
170
		nomComplet = jetonDecode.intitule;
164
		email = jetonDecode.sub;
171
		email = jetonDecode.sub;
165
	}
172
	}
166
	// affichage
173
	// affichage
167
	$('#nom-complet').html(nomComplet);
174
	$('#nom-complet').html(nomComplet);
168
	$('#nom-complet').attr('title', email);
175
	$('#nom-complet').attr('title', email);
169
}
176
}
170
 
177
 
171
/**
178
/**
172
 * Décodage à l'arrache d'un jeton JWT, ATTENTION CONSIDERE QUE LE
179
 * Décodage à l'arrache d'un jeton JWT, ATTENTION CONSIDERE QUE LE
173
 * JETON EST VALIDE, ne pas décoder n'importe quoi - pas trouvé de lib simple
180
 * JETON EST VALIDE, ne pas décoder n'importe quoi - pas trouvé de lib simple
174
 * Si pb de cross-browser, tenter ceci : https://code.google.com/p/javascriptbase64/
181
 * Si pb de cross-browser, tenter ceci : https://code.google.com/p/javascriptbase64/
175
 * ou ceci : https://code.google.com/p/crypto-js
182
 * ou ceci : https://code.google.com/p/crypto-js
176
 */
183
 */
177
function decoderJeton(jeton) {
184
function decoderJeton(jeton) {
178
	parts = jeton.split('.');
185
	parts = jeton.split('.');
179
	payload = parts[1];
186
	payload = parts[1];
180
	payload = atob(payload);
187
	payload = atob(payload);
181
	payload = JSON.parse(payload, true);
188
	payload = JSON.parse(payload, true);
182
 
189
 
183
	return payload;
190
	return payload;
184
}
191
}
185
 
192
 
186
/**
193
/**
187
 * Si la variable "origine" est définie (provenant du paramètre GET "origine"),
194
 * Si la variable "origine" est définie (provenant du paramètre GET "origine"),
188
 * redirige l'utilisateur vers cette page
195
 * redirige l'utilisateur vers cette page
189
 */
196
 */
190
function rediriger() {
197
function rediriger() {
191
	if (origine != '') {
198
	if (origine != '') {
192
		window.location.href = origine;
199
		window.location.href = origine;
193
	}
200
	}
194
}
201
}
195
 
202
 
196
function afficherPanneauIdentification() {
203
function afficherPanneauIdentification() {
197
	$('#panneau-identification').show();
204
	$('#panneau-identification').show();
198
	$('#panneau-bienvenue').hide();
205
	$('#panneau-bienvenue').hide();
-
 
206
	$('.boite-centre').addClass('reduite');
199
}
207
}
200
 
208
 
201
function afficherPanneauBienvenue() {
209
function afficherPanneauBienvenue() {
202
	$('#panneau-identification').hide();
210
	$('#panneau-identification').hide();
203
	$('#panneau-bienvenue').show();
211
	$('#panneau-bienvenue').show();
-
 
212
	$('.boite-centre').removeClass('reduite');
204
}
213
}
205
 
214
 
206
function afficherErreurLogin() {
215
function afficherErreurLogin() {
207
	$('#info-erreur-login').show();
216
	$('#info-erreur-login').show();
208
}
217
}
209
 
218
 
210
function afficherErreurServeur() {
219
function afficherErreurServeur() {
211
	$('#info-erreur-serveur').show();
220
	$('#info-erreur-serveur').show();
212
}
221
}
213
 
222
 
214
function masquerErreurs() {
223
function masquerErreurs() {
215
	$('.info-erreur').hide();
224
	$('.info-erreur').hide();
216
}
225
}