Subversion Repositories Applications.reseau

Rev

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

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