Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 2076 → Rev 2077

/trunk/src/org/tela_botanica/del/client/services/RequestBuilderWithCredentials.java
1,5 → 1,7
package org.tela_botanica.del.client.services;
 
import org.tela_botanica.del.client.modeles.Utilisateur;
 
import com.google.gwt.http.client.RequestBuilder;
 
public class RequestBuilderWithCredentials extends RequestBuilder {
6,6 → 8,9
 
public RequestBuilderWithCredentials(Method httpMethod, String url) {
super(httpMethod, url);
if(Utilisateur.getJeton() != null && ! Utilisateur.getJeton().isEmpty()) {
this.setHeader("Authorization", Utilisateur.getJeton());
}
this.setIncludeCredentials(true);
}
}
/trunk/src/org/tela_botanica/del/client/services/rest/UtilisateurService.java
8,5 → 8,6
public void connecterUtilisateur(String login, String motDePasse, UtilisateurCallback callback);
public void deconnecterUtilisateur(UtilisateurCallback callback);
public void obtenirUtilisateur(UtilisateurCallback callback);
public void obtenirUtilisateur(UtilisateurCallback callback, boolean ignorerAnnuaire);
public void obtenirActiviteUtilisateur(String idUtilisateur, ActiviteUtilisateurCallback callback);
}
/trunk/src/org/tela_botanica/del/client/services/rest/async/PHPCallback.java
29,6 → 29,7
protected ModeRequete mode;
 
public PHPCallback() {
this.mode = ModeRequete.LECTURE;
}
 
public void setMode(ModeRequete mode) {
56,10 → 57,10
codeAttendu = Arrays.asList(500);
break;
}
GWT.log("Codes attendus:"+codeAttendu.toString());
GWT.log("Code:"+statusCode);
if (codeAttendu.contains(statusCode)) {
GWT.log("Code: OK");
//GWT.log("Codes attendus:"+codeAttendu.toString());
//GWT.log("Code:"+statusCode);
if (codeAttendu != null && codeAttendu.contains(statusCode)) {
//GWT.log("Code: OK");
try {
T reponseParsee = parserJSON(response.getText());
surRetour(reponseParsee);
/trunk/src/org/tela_botanica/del/client/services/rest/async/AuthCallback.java
New file
0,0 → 1,20
package org.tela_botanica.del.client.services.rest.async;
 
import org.tela_botanica.del.client.modeles.AuthInfo;
import org.tela_botanica.del.client.utils.UtilitairesServiceResultat;
 
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.user.client.Window;
 
/**
* Retour des services annuaire:auth : connexion, deconnexion, identite - un jeton
* JWT si identifié, false sinon
*/
public abstract class AuthCallback extends PHPCallback<AuthInfo> {
 
@Override
public AuthInfo parserJSON(String retourService) {
AuthInfo authInfo = UtilitairesServiceResultat.parserAuthJson(JSONParser.parseStrict(retourService));
return authInfo;
}
}
/trunk/src/org/tela_botanica/del/client/services/rest/async/UtilisateurCallback.java
4,6 → 4,7
import org.tela_botanica.del.client.utils.UtilitairesServiceResultat;
 
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.user.client.Window;
 
/**
* Objet passé en paramètre d'un service de recuperation d'un utilisateur
14,7 → 15,9
 
@Override
public Utilisateur parserJSON(String retourService) {
return UtilitairesServiceResultat.parserUtilisateurJson(JSONParser.parseStrict(retourService));
Utilisateur util = UtilitairesServiceResultat.parserUtilisateurJson(JSONParser.parseStrict(retourService));
return util;
}
 
}
/trunk/src/org/tela_botanica/del/client/services/rest/UtilisateurServiceConcret.java
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) {