Subversion Repositories Applications.reseau

Rev

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

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