Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 2077 → Rev 2078

/trunk/src/org/tela_botanica/del/client/services/rest/UtilisateurServiceConcret.java
8,14 → 8,18
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 org.tela_botanica.del.client.utils.StringUtils;
 
import com.google.gwt.core.shared.GWT;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.Timer;
 
public class UtilisateurServiceConcret implements UtilisateurService {
private String baseUrl;
private String authBaseUrl;
 
private static Timer rafraichisseurJeton = null;
public UtilisateurServiceConcret() {
this(new Config());
42,10 → 46,7
}
@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
gererRetourAuthInfo(objetRetour, callback);
}
});
} catch (Exception e) {
68,10 → 69,7
}
@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);
gererRetourAuthInfo(objetRetour, callback);
}
});
} catch (Exception e) {
107,10 → 105,7
}
@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);
gererRetourAuthInfo(objetRetour, callback);
}
});
} catch (Exception e) {
144,4 → 139,45
}
}
 
/**
* Enregistre le jeton (potentiellement NULL), sa durée de vie, et appelle
* le service Del pour obtenir le profil utilisateur associé; lorsque le jeton
* n'est pas nul et que sa durée de vie est spécifiée, déclenche un rafraîchissement
* périodique du jeton
*
* @param objetRetour le retour de l'appel au service annuaire:auth (connexion, deconnexion ou identite)
* @param callback
*/
protected void gererRetourAuthInfo(AuthInfo objetRetour, UtilisateurCallback callback) {
// Stockage du jeton rafraîchi et de sa durée (pourrait avoir changé)
Utilisateur.setJeton(objetRetour.token);
Utilisateur.setDureeJeton(objetRetour.duration);
 
// Rafraîchissement automatique du jeton - s'annule lorsque le jeton devient nul
if (Utilisateur.getJeton() != null && Utilisateur.getDureeJeton() > 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 = (Utilisateur.getDureeJeton() * 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
obtenirUtilisateur(null);
}
};
rafraichisseurJeton.scheduleRepeating(delaiRepetition);
}
} else {
if (rafraichisseurJeton != null) { // on sait jamais non plus
rafraichisseurJeton.cancel();
rafraichisseurJeton = null;
}
}
 
// Obtention de l'utilisateur final d'après le service de préférences
obtenirUtilisateurSansAnnuaire(callback);
}
 
}
/trunk/src/org/tela_botanica/del/client/Del.java
5,6 → 5,9
 
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.History;
import com.google.web.bindery.event.shared.UmbrellaException;
import com.google.gwt.core.client.*;
import com.google.gwt.user.client.Window;
 
public class Del implements EntryPoint {
/trunk/src/org/tela_botanica/del/client/modeles/Utilisateur.java
24,6 → 24,8
 
// Jeton encodé en base64 passé de manière automatique aux services dans un header
private static String jeton = "";
// Durée de vie du jeton en secondes (sert au rafraîchissement automatique)
private static int duree = 0;
 
public Utilisateur(String sessionId, String id) {
this.id = id;
105,10 → 107,18
}
 
public static String getJeton() {
return jeton;
return Utilisateur.jeton;
}
 
public static void setJeton(String jeton) {
Utilisateur.jeton = jeton;
}
 
public static int getDureeJeton() {
return Utilisateur.duree;
}
 
public static void setDureeJeton(int duree) {
Utilisateur.duree = duree;
}
}