Subversion Repositories eFlore/Applications.del

Rev

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

Rev 2078 Rev 2087
Line 1... Line 1...
1
package org.tela_botanica.del.client.services.rest;
1
package org.tela_botanica.del.client.services.rest;
Line -... Line 2...
-
 
2
 
2
 
3
import org.tela_botanica.del.client.Del;
3
import org.tela_botanica.del.client.config.Config;
4
import org.tela_botanica.del.client.config.Config;
4
import org.tela_botanica.del.client.modeles.AuthInfo;
5
import org.tela_botanica.del.client.modeles.AuthInfo;
5
import org.tela_botanica.del.client.modeles.Utilisateur;
6
import org.tela_botanica.del.client.modeles.Utilisateur;
6
import org.tela_botanica.del.client.services.rest.async.ActiviteUtilisateurCallback;
7
import org.tela_botanica.del.client.services.rest.async.ActiviteUtilisateurCallback;
Line 94... Line 95...
94
	@Override
95
	@Override
95
	public void obtenirUtilisateur(final UtilisateurCallback callback, boolean ignorerAnnuaire) {
96
	public void obtenirUtilisateur(final UtilisateurCallback callback, boolean ignorerAnnuaire) {
96
		// par défaut, on appelle d'abord le service auth/identite de l'annuaire, afin de connaître
97
		// par défaut, on appelle d'abord le service auth/identite de l'annuaire, afin de connaître
97
		// le statut de l'utilisateur vis à vis du SSO (connecté ou non) et rafraîchir le jeton
98
		// le statut de l'utilisateur vis à vis du SSO (connecté ou non) et rafraîchir le jeton
98
		if (! ignorerAnnuaire) {
99
		if (! ignorerAnnuaire) {
-
 
100
			// ne transmet pas le header Authorization, sans quoi l'annuaire rafraîchit le
-
 
101
			// jeton mis en cache et on ne peut pas se déconnecter depuis une autre application
99
			RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, authBaseUrl + "identite");
102
			RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, authBaseUrl + "identite", false);
100
			try {
103
			try {
101
				rb.sendRequest(null, new AuthCallback() {
104
				rb.sendRequest(null, new AuthCallback() {
102
					public void surErreur(String message) {
105
					public void surErreur(String message) {
103
						// Même si l'annuaire n'est pas content, on va chercher un profil utilisateur "anonyme"
106
						// Si l'annuaire n'est pas content (déconnecté depuis ailleurs ou jeton expiré), on va
-
 
107
						// chercher un profil utilisateur "anonyme" et on déconnecte dans l'interface
104
						obtenirUtilisateurSansAnnuaire(callback);
108
						gererRetourAuthInfo(new AuthInfo(), callback);
105
					}
109
					}
106
					@Override
110
					@Override
107
					public void surRetour(AuthInfo objetRetour) {
111
					public void surRetour(AuthInfo objetRetour) {
108
						gererRetourAuthInfo(objetRetour, callback);
112
						gererRetourAuthInfo(objetRetour, callback);
109
					}
113
					}
Line 146... Line 150...
146
	 * périodique du jeton
150
	 * périodique du jeton
147
	 * 
151
	 * 
148
	 * @param objetRetour le retour de l'appel au service annuaire:auth (connexion, deconnexion ou identite)
152
	 * @param objetRetour le retour de l'appel au service annuaire:auth (connexion, deconnexion ou identite)
149
	 * @param callback
153
	 * @param callback
150
	 */
154
	 */
151
	protected void gererRetourAuthInfo(AuthInfo objetRetour, UtilisateurCallback callback) {
155
	protected void gererRetourAuthInfo(AuthInfo objetRetour, final UtilisateurCallback callback) {
152
		// Stockage du jeton rafraîchi et de sa durée (pourrait avoir changé)
156
		// Stockage du jeton rafraîchi et de sa durée (pourrait avoir changé)
153
		Utilisateur.setJeton(objetRetour.token);
157
		Utilisateur.setJeton(objetRetour.token);
154
		Utilisateur.setDureeJeton(objetRetour.duration);
158
		Utilisateur.setDureeJeton(objetRetour.duration);
Line 155... Line 159...
155
 
159
 
Line 162... Line 166...
162
					@Override
166
					@Override
163
					public void run() {
167
					public void run() {
164
						// Appel de l'annuaire pour rafraîchir le jeton (cb nul pour l'instant)
168
						// Appel de l'annuaire pour rafraîchir le jeton (cb nul pour l'instant)
165
						// @TODO gérer le possible changement de profil / coordonnées de l'utilisateur
169
						// @TODO gérer le possible changement de profil / coordonnées de l'utilisateur
166
						// en cours de connexion
170
						// en cours de connexion
167
						obtenirUtilisateur(null);
171
						obtenirUtilisateur(callback);
168
					}
172
					}
169
				};
173
				};
170
				rafraichisseurJeton.scheduleRepeating(delaiRepetition);
174
				rafraichisseurJeton.scheduleRepeating(delaiRepetition);
171
			}
175
			}
172
		} else {
176
		} else {