1,15 → 1,21 |
package org.tela_botanica.del.client.services.rest; |
|
import org.tela_botanica.del.client.config.Config; |
import org.tela_botanica.del.client.modeles.AuthInfo; |
import org.tela_botanica.del.client.modeles.Utilisateur; |
import org.tela_botanica.del.client.services.rest.async.ActiviteUtilisateurCallback; |
import org.tela_botanica.del.client.services.rest.async.AuthCallback; |
import org.tela_botanica.del.client.services.rest.async.UtilisateurCallback; |
import org.tela_botanica.del.client.services.rest.async.PHPCallback.ModeRequete; |
|
import org.tela_botanica.del.client.services.RequestBuilderWithCredentials; |
|
import com.google.gwt.core.shared.GWT; |
import com.google.gwt.user.client.Window; |
|
public class UtilisateurServiceConcret implements UtilisateurService { |
|
private String baseUrl; |
private String authBaseUrl; |
|
public UtilisateurServiceConcret() { |
this(new Config()); |
17,34 → 23,110 |
|
public UtilisateurServiceConcret(Config config) { |
this.baseUrl = config.getUrl("serviceUtilisateursBaseUrl"); |
this.authBaseUrl = config.getUrl("serviceAuthBaseUrl"); |
} |
|
/** |
* Connecte l'utilisateur en appelant l'annuaire (auth::connexion, SSO), puis enchaîne avec |
* le service "utilisateur" de Del, pour retourner les infos requises par l'interface |
*/ |
@Override |
public void connecterUtilisateur(String login, String motDePasse, UtilisateurCallback callback) { |
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, baseUrl + "utilisateurs/" + login + "/" + motDePasse); |
callback.setMode(ModeRequete.LECTURE); |
public void connecterUtilisateur(String login, String motDePasse, final UtilisateurCallback callback) { |
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, authBaseUrl + "connexion?login=" + login + "&password=" + motDePasse); |
try { |
rb.sendRequest(null, callback); |
// Callback intermédiaire qui lit les infos de l'annuaire et appelle le service de préférences |
rb.sendRequest(null, new AuthCallback() { |
public void surErreur(String message) { |
// merci, de rien, au revoir messieurs-dames |
callback.surErreur(""); |
} |
@Override |
public void surRetour(AuthInfo objetRetour) { |
// Stockage du jeton |
Utilisateur.setJeton(objetRetour.token); |
// Obtention de l'utilisateur final d'après le service de préférences |
obtenirUtilisateurSansAnnuaire(callback); // RequestBulledair passe le jeton dans les headers HTTP |
} |
}); |
} catch (Exception e) { |
// TODO: handle exception |
Window.alert("Exception : " + e.getMessage()); |
} |
} |
|
/** |
* Déconnecte l'utilisateur en appelant l'annuaire (auth::deconnexion, SSO), puis enchaîne avec |
* le service "utilisateur" de Del, pour retourner les infos requises par l'interface |
*/ |
@Override |
public void deconnecterUtilisateur(UtilisateurCallback callback) { |
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, baseUrl + "utilisateurs/deconnecter"); |
callback.setMode(ModeRequete.LECTURE); |
public void deconnecterUtilisateur(final UtilisateurCallback callback) { |
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, authBaseUrl + "deconnexion"); |
try { |
rb.sendRequest(null, callback); |
// Callback intermédiaire qui lit les infos de l'annuaire et appelle le service de préférences |
rb.sendRequest(null, new AuthCallback() { |
public void surErreur(String message) { |
callback.surErreur(""); |
} |
@Override |
public void surRetour(AuthInfo objetRetour) { |
// Stockage du jeton, qui devrait être NULL (mais on sait jamais à l'avenir) |
Utilisateur.setJeton(objetRetour.token); |
// Obtention du pseudo-utilisateur non connecté (id de session) d'après le service de préférences |
obtenirUtilisateurSansAnnuaire(callback); |
} |
}); |
} catch (Exception e) { |
// TODO: handle exception |
GWT.log("Exception : " + e.getMessage()); |
} |
} |
|
/** |
* Va chercher les infos de l'utilisateur en vérifiant d'abord l'identité auprès de l'annuaire |
* @param callback |
*/ |
@Override |
public void obtenirUtilisateur(UtilisateurCallback callback) { |
obtenirUtilisateur(callback, false); |
} |
|
/** |
* Va chercher les infos de l'utilisateur; si ignorerAnnuaire est false, vérifiera d'abord |
* l'identité auprès de l'annuaire (service annuaire:auth/identite) |
* @param callback |
*/ |
@Override |
public void obtenirUtilisateur(final UtilisateurCallback callback, boolean ignorerAnnuaire) { |
// par défaut, on appelle d'abord le service auth/identite de l'annuaire, afin de connaître |
// le statut de l'utilisateur vis à vis du SSO (connecté ou non) et rafraîchir le jeton |
if (! ignorerAnnuaire) { |
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, authBaseUrl + "identite"); |
try { |
rb.sendRequest(null, new AuthCallback() { |
public void surErreur(String message) { |
// Même si l'annuaire n'est pas content, on va chercher un profil utilisateur "anonyme" |
obtenirUtilisateurSansAnnuaire(callback); |
} |
@Override |
public void surRetour(AuthInfo objetRetour) { |
// Stockage du jeton rafraîchi |
Utilisateur.setJeton(objetRetour.token); |
// Obtention de l'utilisateur final d'après le service de préférences |
obtenirUtilisateurSansAnnuaire(callback); |
} |
}); |
} catch (Exception e) { |
// TODO: handle exception |
} |
} else { // sinon on optimise, quand on vient de se (de)connecter, pas la peine de rappeler l'annuaire |
obtenirUtilisateurSansAnnuaire(callback); |
} |
} |
|
/** |
* Va chercher les infos de l'utilisateur sans vérifier l'identité auprès de l'annuaire |
* @param callback |
*/ |
public void obtenirUtilisateurSansAnnuaire(UtilisateurCallback callback) { |
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, baseUrl + "utilisateurs/"); |
callback.setMode(ModeRequete.LECTURE); |
try { |
rb.sendRequest(null, callback); |
} catch (Exception e) { |
55,7 → 137,6 |
@Override |
public void obtenirActiviteUtilisateur(String idUtilisateur, ActiviteUtilisateurCallback callback) { |
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, baseUrl + "utilisateurs/"+idUtilisateur+"/activite"); |
callback.setMode(ModeRequete.LECTURE); |
try { |
rb.sendRequest(null, callback); |
} catch (Exception e) { |