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 |
42,9 → 48,9 |
*/ |
|
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,21 → 64,31 |
@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); |
} |
} |
}) ; |
|
} catch (RequestException e) { |
80,19 → 96,15 |
} |
} |
|
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 { |
|
rb.sendRequest(null, new RequestCallback() { |
|
@Override |
public void onError(Request request, Throwable exception) { |
// TODO Auto-generated method stub |
|
} |
|
100,25 → 112,62 |
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) { |
|
Utilisateur utilisateur = Utilisateur.InitialiserInstance(objetJsonUtilisateur); |
if(r != null) { |
r.rafraichir(utilisateur,true); |
} |
} else { |
|
} |
} |
} |
}) ; |
} catch (RequestException e) { |
|
} |
} |
|
public void deconnecterUtilisateur(final Rafraichissable r, String user) { |
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET, Configuration.getIdentificationBaseUrl()+ "/deconnexion/") ; |
|
try { |
|
rb.sendRequest(null, new RequestCallback() { |
|
@Override |
public void onError(Request request, Throwable exception) { |
// TODO Auto-generated method stub |
|
} |
|
@Override |
public void onResponseReceived(Request request, |
Response response) { |
Utilisateur.setJeton(""); |
gererTimerRafraichissementJeton(0, r); |
obtenirInfosComplementairesUtilisateur(r); |
} |
}) ; |
|
} catch (RequestException e) { |
|
} |
} |
|
public void connecteUtilisateur (final Rafraichissable r, String login, String password) { |
public void connecterUtilisateur (final Rafraichissable r, String login, String password) { |
|
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.GET,Configuration.getServiceBaseUrl() + "/User/" + login + "/" + 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 { |
|
135,16 → 184,18 |
Response response) { |
|
JSONValue jsonValue = JSONParser.parse(response.getText()); |
JSONObject objetJsonUtilisateur; |
JSONObject objetJsonUtilisateur = jsonValue.isObject(); |
|
if ((objetJsonUtilisateur = jsonValue.isObject()) != null) { |
|
Utilisateur utilisateur = Utilisateur.InitialiserInstance(objetJsonUtilisateur); |
r.rafraichir(utilisateur,true); |
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) { |
152,7 → 203,34 |
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; |
} |
} |
} |
|
public void accepterLicence(String identifiantUtilisateur) { |
|
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST,Configuration.getServiceBaseUrl() + "/LicenceUtilisateur/"+identifiantUtilisateur) ; |