8,9 → 8,11 |
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 { |
|
17,6 → 19,8 |
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); |
} |
|
} |