Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 2805 → Rev 2806

/trunk/src/org/tela_botanica/client/util/RequestBuilderWithCredentials.java
1,5 → 1,7
package org.tela_botanica.client.util;
 
import org.tela_botanica.client.modeles.objets.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().isEmpty()) {
this.setHeader("Authorization", Utilisateur.getJeton());
}
this.setIncludeCredentials(true);
}
}
/trunk/src/org/tela_botanica/client/util/Util.java
625,4 → 625,12
}
return lang;
}-*/;
public static native String utf8ToB64(String str) /*-{
return window.btoa(unescape(encodeURIComponent( str )));
}-*/;
 
public static native String b64ToUtf8(String str) /*-{
return decodeURIComponent(escape(window.atob( str )));
}-*/;
}
/trunk/src/org/tela_botanica/client/CarnetEnLigneModele.java
43,7 → 43,7
}
 
public void connecterUtilisateur(Rafraichissable r, String login , String password) {
new UtilisateurAsynchroneDAO(this).connecteUtilisateur(r,login, password );
new UtilisateurAsynchroneDAO(this).connecterUtilisateur(r,login, password );
}
 
public void getEtatUtilisateur(Rafraichissable r) {
/trunk/src/org/tela_botanica/client/modeles/dao/UtilisateurAsynchroneDAO.java
13,12 → 13,17
 
import com.google.gwt.http.client.Request;
import org.tela_botanica.client.util.RequestBuilderWithCredentials;
import org.tela_botanica.client.util.Util;
 
import com.google.gwt.http.client.RequestCallback;
import com.google.gwt.http.client.RequestException;
import com.google.gwt.http.client.Response;
import com.google.gwt.http.client.URL;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONString;
import com.google.gwt.json.client.JSONValue;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.Window;
 
public class UtilisateurAsynchroneDAO {
27,6 → 32,7
* Le modèle associé au DAO
*/
private CarnetEnLigneModele carnetEnLigneModele = null ;
private Timer rafraichisseurJeton;
/**
* Constructeur
41,10 → 47,10
* @param retour : methode appelle en retour d'appel
*/
public void getEtatUtilisateur(final Rafraichissable r) {
 
public void getEtatUtilisateur(final Rafraichissable r) {
String url = Configuration.getIdentificationBaseUrl()+"/identite/";
// Recherche identifiant utilisateur identifie
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET,Configuration.getServiceBaseUrl() + "/User/") ;
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, url) ;
try {
58,19 → 64,29
@Override
public void onResponseReceived(Request request,
Response response) {
if(response.getText().isEmpty()) {
Window.alert(Msg.get("erreur-contacter-serveur"));
} else {
JSONValue jsonValue = JSONParser.parse(response.getText());
JSONObject objetJsonUtilisateur;
JSONObject objetJsonUtilisateur = jsonValue.isObject();
if ((objetJsonUtilisateur = jsonValue.isObject()) != null) {
if (objetJsonUtilisateur != null && objetJsonUtilisateur.get("session") != null) {
Utilisateur utilisateur = Utilisateur.InitialiserInstance(objetJsonUtilisateur);
r.rafraichir(utilisateur,true);
// Drapeau leve si utilisateur deja identifie
boolean identifie = objetJsonUtilisateur.get("session").isBoolean().booleanValue();
if(identifie) {
if(objetJsonUtilisateur.get("token").isString() != null) {
String token = ((JSONString) objetJsonUtilisateur.get("token")).stringValue();
Utilisateur.setJeton(token);
int dureeJeton = (int)objetJsonUtilisateur.get("duration").isNumber().doubleValue();
gererTimerRafraichissementJeton(dureeJeton, r);
}
}
}
// dans tous les cas même si l'on est pas identifié par le sso, ceci permet d'obtenir
// une session temporaire
obtenirInfosComplementairesUtilisateur(r);
}
}
}) ;
79,21 → 95,17
}
}
 
 
 
public void deconnecterUtilisateur(final Rafraichissable r, String user) {
 
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getServiceBaseUrl()+ "/User/" + user) ;
public void obtenirInfosComplementairesUtilisateur(final Rafraichissable r) {
try {
String url = Configuration.getServiceBaseUrl()+"/User/";
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, url) ;
try {
rb.sendRequest(null, new RequestCallback() {
 
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
}
 
@Override
100,26 → 112,32
public void onResponseReceived(Request request,
Response response) {
JSONValue jsonValue = JSONParser.parse(response.getText());
JSONObject objetJsonUtilisateur;
if ((objetJsonUtilisateur = jsonValue.isObject()) != null) {
if(response.getText().isEmpty()) {
Window.alert(Msg.get("erreur-contacter-serveur"));
} else {
Utilisateur utilisateur = Utilisateur.InitialiserInstance(objetJsonUtilisateur);
r.rafraichir(utilisateur,true);
}
JSONValue jsonValue = JSONParser.parse(response.getText());
JSONObject objetJsonUtilisateur;
if ((objetJsonUtilisateur = jsonValue.isObject()) != null) {
Utilisateur utilisateur = Utilisateur.InitialiserInstance(objetJsonUtilisateur);
if(r != null) {
r.rafraichir(utilisateur,true);
}
} else {
}
}
}
}) ;
}) ;
} catch (RequestException e) {
}
}
 
public void connecteUtilisateur (final Rafraichissable r, String login, String password) {
public void deconnecterUtilisateur(final Rafraichissable r, String user) {
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getIdentificationBaseUrl()+ "/deconnexion/") ;
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET,Configuration.getServiceBaseUrl() + "/User/" + login + "/" + password) ;
try {
rb.sendRequest(null, new RequestCallback() {
132,24 → 150,84
 
@Override
public void onResponseReceived(Request request,
Response response) {
Response response) {
Utilisateur.setJeton("");
gererTimerRafraichissementJeton(0, r);
obtenirInfosComplementairesUtilisateur(r);
}
}) ;
} catch (RequestException e) {
JSONValue jsonValue = JSONParser.parse(response.getText());
JSONObject objetJsonUtilisateur;
if ((objetJsonUtilisateur = jsonValue.isObject()) != null) {
}
}
 
public void connecterUtilisateur (final Rafraichissable r, String login, String password) {
 
//connexion?login=aurelien@tela-botanica.org&password=Canard123$
if(!login.isEmpty() && !password.isEmpty()) {
String url = Configuration.getIdentificationBaseUrl() + "/connexion?login=" + URL.encodeComponent(login) + "&password=" + URL.encodeComponent(password);
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, url) ;
try {
rb.sendRequest(null, new RequestCallback() {
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
Utilisateur utilisateur = Utilisateur.InitialiserInstance(objetJsonUtilisateur);
r.rafraichir(utilisateur,true);
}
}
}
@Override
public void onResponseReceived(Request request,
Response response) {
JSONValue jsonValue = JSONParser.parse(response.getText());
JSONObject objetJsonUtilisateur = jsonValue.isObject();
if (objetJsonUtilisateur != null && objetJsonUtilisateur.get("session") != null) {
if(objetJsonUtilisateur.get("token").isString() != null) {
String token = ((JSONString) objetJsonUtilisateur.get("token")).stringValue();
Utilisateur.setJeton(token);
int dureeJeton = (int)objetJsonUtilisateur.get("duration").isNumber().doubleValue();
gererTimerRafraichissementJeton(dureeJeton, r);
}
obtenirInfosComplementairesUtilisateur(r);
}
}
}) ;
} catch (RequestException e) {
}) ;
e.printStackTrace() ;
}
}
}
private void gererTimerRafraichissementJeton(int duree, final Rafraichissable r) {
// Rafraîchissement automatique du jeton - s'annule lorsque le jeton devient nul
if (!Utilisateur.getJeton().isEmpty() && duree > 0) {
} catch (RequestException e) {
e.printStackTrace() ;
if (rafraichisseurJeton == null) { // on sait jamais
// 3/4 de la durée de vie du jeton, en millisecondes (ça laisse de la marge)
int delaiRepetition = (duree * 1000) * 3 / 4;
rafraichisseurJeton = new Timer() {
@Override
public void run() {
// Appel de l'annuaire pour rafraîchir le jeton (cb nul pour l'instant)
// @TODO gérer le possible changement de profil / coordonnées de l'utilisateur
// en cours de connexion
getEtatUtilisateur(null);
}
};
rafraichisseurJeton.scheduleRepeating(delaiRepetition);
}
} else {
if (rafraichisseurJeton != null) { // on sait jamais non plus
rafraichisseurJeton.cancel();
rafraichisseurJeton = null;
}
}
}
 
/trunk/src/org/tela_botanica/client/modeles/objets/Configuration.java
26,6 → 26,8
/**
* L'url de base du serveur jrest
*/
private static String identificationBaseUrl;
private static String serviceBaseUrl;
 
private static String imageBaseUrl;
90,6 → 92,9
// variables du fichier javascript
//if(GWT.isScript()) {
identificationBaseUrl = Dictionary.getDictionary("configuration").get(
"identificationBaseUrl");
serviceBaseUrl = Dictionary.getDictionary("configuration").get(
"serviceBaseUrl");
182,6 → 187,15
}
return referentiels;
}
/**
* Accesseur pour l'url de base d'identification
*
* @return une url de la forme http://emplacement_serveur/annuaire/Auth
*/
public static String getIdentificationBaseUrl() {
return identificationBaseUrl;
}
 
/**
* Accesseur pour l'url de base du serveur jrest
/trunk/src/org/tela_botanica/client/modeles/objets/Utilisateur.java
17,6 → 17,9
private static Utilisateur thisUtilisateur = null;
// Jeton encodé en base64 passé de manière automatique aux services dans un header
private static String jeton = "";
public static Utilisateur InitialiserInstance(JSONObject objetJsonUtilisateur) {
thisUtilisateur = new Utilisateur(objetJsonUtilisateur);
27,6 → 30,14
return thisUtilisateur;
}
public static String getJeton() {
return jeton;
}
public static void setJeton(String jeton) {
Utilisateur.jeton = jeton;
}
private Utilisateur(JSONObject objetJsonUtilisateur) {
// login utilisateur ou vide si non identifie