Subversion Repositories eFlore/Applications.del

Rev

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

Rev 2054 Rev 2077
1
package org.tela_botanica.del.client.services.rest;
1
package org.tela_botanica.del.client.services.rest;
2
 
2
 
3
import org.tela_botanica.del.client.config.Config;
3
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.Utilisateur;
4
import org.tela_botanica.del.client.services.rest.async.ActiviteUtilisateurCallback;
6
import org.tela_botanica.del.client.services.rest.async.ActiviteUtilisateurCallback;
-
 
7
import org.tela_botanica.del.client.services.rest.async.AuthCallback;
5
import org.tela_botanica.del.client.services.rest.async.UtilisateurCallback;
8
import org.tela_botanica.del.client.services.rest.async.UtilisateurCallback;
6
import org.tela_botanica.del.client.services.rest.async.PHPCallback.ModeRequete;
9
import org.tela_botanica.del.client.services.rest.async.PHPCallback.ModeRequete;
7
 
-
 
8
import org.tela_botanica.del.client.services.RequestBuilderWithCredentials;
10
import org.tela_botanica.del.client.services.RequestBuilderWithCredentials;
-
 
11
 
-
 
12
import com.google.gwt.core.shared.GWT;
-
 
13
import com.google.gwt.user.client.Window;
9
 
14
 
10
public class UtilisateurServiceConcret implements UtilisateurService {
15
public class UtilisateurServiceConcret implements UtilisateurService {
11
	
16
	
12
	private String baseUrl;
17
	private String baseUrl;
-
 
18
	private String authBaseUrl;
13
	
19
	
14
	public UtilisateurServiceConcret() {
20
	public UtilisateurServiceConcret() {
15
		this(new Config());
21
		this(new Config());
16
	}
22
	}
17
	
23
	
18
	public UtilisateurServiceConcret(Config config) {
24
	public UtilisateurServiceConcret(Config config) {
19
		this.baseUrl = config.getUrl("serviceUtilisateursBaseUrl");
25
		this.baseUrl = config.getUrl("serviceUtilisateursBaseUrl");
-
 
26
		this.authBaseUrl = config.getUrl("serviceAuthBaseUrl");
20
	}
27
	}
21
	
28
 
-
 
29
	/**
-
 
30
	 * Connecte l'utilisateur en appelant l'annuaire (auth::connexion, SSO), puis enchaîne avec
-
 
31
	 * le service "utilisateur" de Del, pour retourner les infos requises par l'interface
-
 
32
	 */
22
	@Override
33
	@Override
23
	public void connecterUtilisateur(String login, String motDePasse, UtilisateurCallback callback) {
34
	public void connecterUtilisateur(String login, String motDePasse, final UtilisateurCallback callback) {
24
		RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, baseUrl + "utilisateurs/" + login + "/" + motDePasse);
35
		RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, authBaseUrl + "connexion?login=" + login + "&password=" + motDePasse);
25
		callback.setMode(ModeRequete.LECTURE);
-
 
26
		try {
36
		try {
-
 
37
			// Callback intermédiaire qui lit les infos de l'annuaire et appelle le service de préférences
27
			rb.sendRequest(null, callback);
38
			rb.sendRequest(null, new AuthCallback() {
-
 
39
				public void surErreur(String message) {
-
 
40
					// merci, de rien, au revoir messieurs-dames
-
 
41
					callback.surErreur("");
-
 
42
				}
-
 
43
				@Override
-
 
44
				public void surRetour(AuthInfo objetRetour) {
-
 
45
					// Stockage du jeton
-
 
46
					Utilisateur.setJeton(objetRetour.token);
-
 
47
					// Obtention de l'utilisateur final d'après le service de préférences
-
 
48
					obtenirUtilisateurSansAnnuaire(callback); // RequestBulledair passe le jeton dans les headers HTTP
-
 
49
				}
-
 
50
			});
28
		} catch (Exception e) {
51
		} catch (Exception e) {
29
			// TODO: handle exception
52
			Window.alert("Exception : " + e.getMessage());
30
		}
53
		}
31
	}
54
	}
-
 
55
 
-
 
56
	/**
-
 
57
	 * Déconnecte l'utilisateur en appelant l'annuaire (auth::deconnexion, SSO), puis enchaîne avec
-
 
58
	 * le service "utilisateur" de Del, pour retourner les infos requises par l'interface
32
 
59
	 */
33
	@Override
60
	@Override
34
	public void deconnecterUtilisateur(UtilisateurCallback callback) {
61
	public void deconnecterUtilisateur(final UtilisateurCallback callback) {
35
		RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, baseUrl + "utilisateurs/deconnecter");
-
 
36
		callback.setMode(ModeRequete.LECTURE);
62
		RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, authBaseUrl + "deconnexion");
-
 
63
		try {
37
		try {
64
			// Callback intermédiaire qui lit les infos de l'annuaire et appelle le service de préférences
-
 
65
			rb.sendRequest(null, new AuthCallback() {
-
 
66
				public void surErreur(String message) {
-
 
67
					callback.surErreur("");
-
 
68
				}
-
 
69
				@Override
-
 
70
				public void surRetour(AuthInfo objetRetour) {
-
 
71
					// Stockage du jeton, qui devrait être NULL (mais on sait jamais à l'avenir)
-
 
72
					Utilisateur.setJeton(objetRetour.token);
-
 
73
					// Obtention du pseudo-utilisateur non connecté (id de session) d'après le service de préférences
-
 
74
					obtenirUtilisateurSansAnnuaire(callback);
-
 
75
				}
38
			rb.sendRequest(null, callback);
76
			});
39
		} catch (Exception e) {
77
		} catch (Exception e) {
40
			// TODO: handle exception
78
			GWT.log("Exception : " + e.getMessage());
41
		}
79
		}
42
	}
80
	}
-
 
81
 
-
 
82
	/**
-
 
83
	 * Va chercher les infos de l'utilisateur en vérifiant d'abord l'identité auprès de l'annuaire
-
 
84
	 * @param callback
43
 
85
	 */
44
	@Override
86
	@Override
-
 
87
	public void obtenirUtilisateur(UtilisateurCallback callback) {
-
 
88
		obtenirUtilisateur(callback, false);
-
 
89
	}
-
 
90
 
-
 
91
	/**
-
 
92
	 * Va chercher les infos de l'utilisateur; si ignorerAnnuaire est false, vérifiera d'abord
-
 
93
	 * l'identité auprès de l'annuaire (service annuaire:auth/identite)
-
 
94
	 * @param callback
-
 
95
	 */
-
 
96
	@Override
-
 
97
	public void obtenirUtilisateur(final UtilisateurCallback callback, boolean ignorerAnnuaire) {
-
 
98
		// par défaut, on appelle d'abord le service auth/identite de l'annuaire, afin de connaître
-
 
99
		// le statut de l'utilisateur vis à vis du SSO (connecté ou non) et rafraîchir le jeton
-
 
100
		if (! ignorerAnnuaire) {
-
 
101
			RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, authBaseUrl + "identite");
-
 
102
			try {
-
 
103
				rb.sendRequest(null, new AuthCallback() {
-
 
104
					public void surErreur(String message) {
-
 
105
						// Même si l'annuaire n'est pas content, on va chercher un profil utilisateur "anonyme"
-
 
106
						obtenirUtilisateurSansAnnuaire(callback);
-
 
107
					}
-
 
108
					@Override
-
 
109
					public void surRetour(AuthInfo objetRetour) {
-
 
110
						// Stockage du jeton rafraîchi
-
 
111
						Utilisateur.setJeton(objetRetour.token);
-
 
112
						// Obtention de l'utilisateur final d'après le service de préférences
-
 
113
						obtenirUtilisateurSansAnnuaire(callback);
-
 
114
					}
-
 
115
				});
-
 
116
			} catch (Exception e) {
-
 
117
				// TODO: handle exception
-
 
118
			}
-
 
119
		} else { // sinon on optimise, quand on vient de se (de)connecter, pas la peine de rappeler l'annuaire
-
 
120
			obtenirUtilisateurSansAnnuaire(callback);
-
 
121
		}
-
 
122
	}
-
 
123
 
-
 
124
	/**
-
 
125
	 * Va chercher les infos de l'utilisateur sans vérifier l'identité auprès de l'annuaire
-
 
126
	 * @param callback
-
 
127
	 */
45
	public void obtenirUtilisateur(UtilisateurCallback callback) {
128
	public void obtenirUtilisateurSansAnnuaire(UtilisateurCallback callback) {
46
		RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, baseUrl + "utilisateurs/");
-
 
47
		callback.setMode(ModeRequete.LECTURE);
129
		RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, baseUrl + "utilisateurs/");
48
		try {
130
		try {
49
			rb.sendRequest(null, callback);
131
			rb.sendRequest(null, callback);
50
		} catch (Exception e) {
132
		} catch (Exception e) {
51
			// TODO: handle exception
133
			// TODO: handle exception
52
		}
134
		}
53
	}
135
	}
54
 
136
 
55
	@Override
137
	@Override
56
	public void obtenirActiviteUtilisateur(String idUtilisateur, ActiviteUtilisateurCallback callback) {
138
	public void obtenirActiviteUtilisateur(String idUtilisateur, ActiviteUtilisateurCallback callback) {
57
		RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, baseUrl + "utilisateurs/"+idUtilisateur+"/activite");
139
		RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, baseUrl + "utilisateurs/"+idUtilisateur+"/activite");
58
		callback.setMode(ModeRequete.LECTURE);
-
 
59
		try {
140
		try {
60
			rb.sendRequest(null, callback);
141
			rb.sendRequest(null, callback);
61
		} catch (Exception e) {
142
		} catch (Exception e) {
62
			// TODO: handle exception
143
			// TODO: handle exception
63
		}
144
		}
64
	}
145
	}
65
 
146
 
66
}
147
}