Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 2806 → Rev 2805

/trunk/src/org/tela_botanica/client/CarnetEnLigneModele.java
43,7 → 43,7
}
 
public void connecterUtilisateur(Rafraichissable r, String login , String password) {
new UtilisateurAsynchroneDAO(this).connecterUtilisateur(r,login, password );
new UtilisateurAsynchroneDAO(this).connecteUtilisateur(r,login, password );
}
 
public void getEtatUtilisateur(Rafraichissable r) {
/trunk/src/org/tela_botanica/client/modeles/dao/UtilisateurAsynchroneDAO.java
13,17 → 13,12
 
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 {
32,7 → 27,6
* Le modèle associé au DAO
*/
private CarnetEnLigneModele carnetEnLigneModele = null ;
private Timer rafraichisseurJeton;
/**
* Constructeur
47,10 → 41,10
* @param retour : methode appelle en retour d'appel
*/
public void getEtatUtilisateur(final Rafraichissable r) {
String url = Configuration.getIdentificationBaseUrl()+"/identite/";
public void getEtatUtilisateur(final Rafraichissable r) {
 
// Recherche identifiant utilisateur identifie
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, url) ;
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET,Configuration.getServiceBaseUrl() + "/User/") ;
try {
64,29 → 58,19
@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 = jsonValue.isObject();
JSONObject objetJsonUtilisateur;
if (objetJsonUtilisateur != null && objetJsonUtilisateur.get("session") != null) {
if ((objetJsonUtilisateur = jsonValue.isObject()) != null) {
// 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);
}
}
Utilisateur utilisateur = Utilisateur.InitialiserInstance(objetJsonUtilisateur);
r.rafraichir(utilisateur,true);
}
// dans tous les cas même si l'on est pas identifié par le sso, ceci permet d'obtenir
// une session temporaire
obtenirInfosComplementairesUtilisateur(r);
}
}
}) ;
95,17 → 79,21
}
}
public void obtenirInfosComplementairesUtilisateur(final Rafraichissable r) {
 
 
 
public void deconnecterUtilisateur(final Rafraichissable r, String user) {
 
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getServiceBaseUrl()+ "/User/" + user) ;
String url = Configuration.getServiceBaseUrl()+"/User/";
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, url) ;
try {
try {
rb.sendRequest(null, new RequestCallback() {
 
@Override
public void onError(Request request, Throwable exception) {
// TODO Auto-generated method stub
}
 
@Override
112,32 → 100,26
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;
if ((objetJsonUtilisateur = jsonValue.isObject()) != null) {
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 {
}
}
Utilisateur utilisateur = Utilisateur.InitialiserInstance(objetJsonUtilisateur);
r.rafraichir(utilisateur,true);
}
}
}) ;
}) ;
} catch (RequestException e) {
}
}
 
public void deconnecterUtilisateur(final Rafraichissable r, String user) {
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getIdentificationBaseUrl()+ "/deconnexion/") ;
public void connecteUtilisateur (final Rafraichissable r, String login, String password) {
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET,Configuration.getServiceBaseUrl() + "/User/" + login + "/" + password) ;
try {
rb.sendRequest(null, new RequestCallback() {
150,84 → 132,24
 
@Override
public void onResponseReceived(Request request,
Response response) {
Utilisateur.setJeton("");
gererTimerRafraichissementJeton(0, r);
obtenirInfosComplementairesUtilisateur(r);
}
}) ;
} catch (RequestException e) {
Response response) {
}
}
 
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
JSONValue jsonValue = JSONParser.parse(response.getText());
JSONObject objetJsonUtilisateur;
if ((objetJsonUtilisateur = jsonValue.isObject()) != null) {
}
@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);
}
}
}) ;
Utilisateur utilisateur = Utilisateur.InitialiserInstance(objetJsonUtilisateur);
r.rafraichir(utilisateur,true);
}
}
} 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) {
}) ;
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;
}
} catch (RequestException e) {
e.printStackTrace() ;
}
}
 
/trunk/src/org/tela_botanica/client/modeles/objets/Configuration.java
26,8 → 26,6
/**
* L'url de base du serveur jrest
*/
private static String identificationBaseUrl;
private static String serviceBaseUrl;
 
private static String imageBaseUrl;
92,9 → 90,6
// variables du fichier javascript
//if(GWT.isScript()) {
identificationBaseUrl = Dictionary.getDictionary("configuration").get(
"identificationBaseUrl");
serviceBaseUrl = Dictionary.getDictionary("configuration").get(
"serviceBaseUrl");
187,15 → 182,6
}
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,9 → 17,6
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);
30,14 → 27,6
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
/trunk/src/org/tela_botanica/client/util/RequestBuilderWithCredentials.java
1,7 → 1,5
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 {
8,9 → 6,6
 
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,12 → 625,4
}
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 )));
}-*/;
}