/trunk/jrest/bibliotheque/GestionUtilisateur.php |
---|
93,12 → 93,50 |
$login = false; |
if($token) { |
// On demande à l'annuaire si le jeton est bien valide |
$valide = file_get_contents($this->config['identification']['sso_url'].'/verifierjeton?token='.$token); |
// curl avec les options suivantes ignore le pb de certificat (pour tester en local) |
// @TODO CHANGER ! |
$ch = curl_init(); |
$timeout = 5; |
curl_setopt($ch, CURLOPT_URL, $this->config['identification']['sso_url'].'/verifierjeton?token='.$token); |
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); |
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); |
// équivalent de "-k" |
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); |
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); |
$valide = curl_exec($ch); |
curl_close($ch); |
//$valide = file_get_contents($this->config['identification']['sso_url'].'/verifierjeton?token='.$token); |
$login = ($valide === "true") ? $this->obtenirLoginParToken($token) : false; |
} |
return $login; |
} |
protected function verifierJeton($jeton) { |
$urlServiceVerification = $this->conteneur->getParametre("urlServiceBaseAuth") . "verifierjeton"; |
$urlServiceVerification .= "?token=" . $jeton; |
// file_get_contents râle si le certificat HTTPS est auto-signé |
//$retour = file_get_contents($urlServiceVerification); |
// curl avec les options suivantes ignore le pb de certificat (pour tester en local) |
$ch = curl_init(); |
$timeout = 5; |
curl_setopt($ch, CURLOPT_URL, $urlServiceVerification); |
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); |
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); |
// équivalent de "-k" |
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); |
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); |
$data = curl_exec($ch); |
curl_close($ch); |
$retour = $data; |
$retour = json_decode($retour, true); |
return ($retour === true); |
} |
private function decoderToken($token) { |
$token_parts = explode('.', $token); |
/trunk/jrest |
---|
Property changes: |
Modified: svn:mergeinfo |
Merged /branches/v2.24-sarcloir/jrest:r2844-2845 |
/trunk/src/org/tela_botanica/client/util/Analytics.java |
---|
New file |
0,0 → 1,68 |
package org.tela_botanica.client.util; |
import org.tela_botanica.client.modeles.objets.Configuration; |
import org.tela_botanica.client.util.Util; |
public class Analytics { |
/** |
* Envoie une notification à Google Analytics, comme quoi la page "url" a été visitée; |
* passer par pageVisitee() pour s'assurer qu'on est bien en prod |
* |
* @param url adresse ou surnom de la page visitée |
*/ |
public static native void pageVisiteeNatif(String url) /*-{ |
if (url == "") { |
url = $wnd.location.href; |
} |
$wnd.ga('send', 'pageview', url); |
}-*/; |
/** |
* Proxy pour evenementNatif() qui n'envoie l'événement que si on est en prod |
*/ |
public static void pageVisitee(String url) { |
if (Configuration.isProd()) { |
//Util.LogVersFirebug("Page vue: " + url); |
Analytics.pageVisiteeNatif(url); |
} else { |
} |
} |
public static void pageVisitee() { |
pageVisitee(""); |
} |
/** |
* Envoie une notification à Google Analytics, comme quoi l'événement "action" a été déclenché |
* sur la ressource "categorie" - passer par evenement() pour s'assurer qu'on |
* est bien en prod |
* |
* @param categorie - la ressource sur laquelle l'utilisateur a agi |
* @param action - ce que l'utilisateur a fait avec cette ressource |
* @param label - un bout de JSON avec des détails |
* @param nombre - nombre d'actions à enregistrer |
*/ |
public static native void evenementNatif(String categorie, String action, String label, int nombre) /*-{ |
$wnd.ga('send', 'event', categorie, action, label, nombre); |
}-*/; |
/** |
* Proxy pour evenementNatif() qui n'envoie l'événement que si on est en prod |
*/ |
public static void evenement(String categorie, String action, String label, int nombre) { |
if (Configuration.isProd()) { |
//Util.LogVersFirebug("Evenement: " + categorie + ", " + action + ", " + label + ", " + nombre); |
Analytics.evenementNatif(categorie, action, label, nombre); |
} |
} |
public static void evenement(String categorie, String action, String label) { |
Analytics.evenement(categorie, action, label, 1); |
} |
public static void evenement(String categorie, String action) { |
Analytics.evenement(categorie, action, "", 1); |
} |
} |
/trunk/src/org/tela_botanica/client/cel2.java |
---|
3,6 → 3,7 |
import org.tela_botanica.client.i18n.Msg; |
import org.tela_botanica.client.modeles.objets.Configuration; |
import org.tela_botanica.client.util.Util; |
import org.tela_botanica.client.util.Analytics; |
import com.google.gwt.ajaxloader.client.AjaxLoader; |
import com.google.gwt.ajaxloader.client.AjaxLoader.AjaxLoaderOptions; |
44,6 → 45,9 |
Configuration config = new Configuration(); |
initialiserLangue(); |
// stats |
Analytics.pageVisitee(); |
Element elem = DOM.getElementById("texte_chargement"); |
elem.setInnerText(Msg.get("chargement")); |
/trunk/src/org/tela_botanica/client/modeles/dao/ObservationAsynchroneDAO.java |
---|
6,6 → 6,7 |
import org.tela_botanica.client.modeles.objets.Observation; |
import org.tela_botanica.client.observation.ObservationModele; |
import org.tela_botanica.client.util.Util; |
import org.tela_botanica.client.util.Analytics; |
import com.google.gwt.http.client.Request; |
import org.tela_botanica.client.util.RequestBuilderWithCredentials; |
13,7 → 14,6 |
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.user.client.Window; |
/** |
44,13 → 44,12 |
} |
/** |
* Envoie requete au serveur pour ajouter une observations |
* Envoie une requete au serveur pour ajouter une observation |
* |
* @param motcle |
* le mots clés à ajouter avec son parent et son identifiant |
* le mot-clé à ajouter avec son parent et son identifiant |
*/ |
public void ajouter(final Rafraichissable r, String utilisateur, final Observation obs) { |
public void ajouter(final Rafraichissable r, final String utilisateur, final Observation obs) { |
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST,Configuration.getServiceBaseUrl()+ "/Inventory/") ; |
rb.setHeader("Content-type", "application/x-www-form-urlencoded"); |
90,6 → 89,9 |
if(response.getStatusCode() >= 400) { |
com.google.gwt.user.client.Window.alert(response.getText()); |
} |
// stats |
Analytics.evenement("observation", "creation", "{\"utilisateur\": \"" + utilisateur + "\", \"nom_sci\": \"" + obs.getNomSaisi() + "\", \"referentiel\": \"" + obs.getCodeCourtReferentielTaxo() + "\"}"); |
r.rafraichir(obs,true); |
} |
}) ; |
106,7 → 108,7 |
* le mots clés à ajouter avec son parent et son identifiant |
*/ |
public void modifier(final Rafraichissable r, String utilisateur, final Observation obs) { |
public void modifier(final Rafraichissable r, final String utilisateur, final Observation obs) { |
RequestBuilderWithCredentials rb = new RequestBuilderWithCredentials(RequestBuilderWithCredentials.POST,Configuration.getServiceBaseUrl()+ "/Inventory/" + utilisateur + "/" + obs.getNumeroOrdre()+ "/") ; |
rb.setHeader("Content-type", "application/x-www-form-urlencoded"); |
146,6 → 148,9 |
if(response.getStatusCode() >= 400) { |
com.google.gwt.user.client.Window.alert(response.getText()); |
} |
// stats |
Analytics.evenement("observation", "modification", "{\"utilisateur\": \"" + utilisateur + "\", \"nom_sci\": \"" + obs.getNomSaisi() + "\", \"referentiel\": \"" + obs.getCodeCourtReferentielTaxo() + "\"}"); |
r.rafraichir(obs,true); |
} |
158,7 → 163,7 |
} |
public void supprimer(Rafraichissable r, String identifiant, String numeroOrdre) { |
public void supprimer(Rafraichissable r, final String identifiant, final String numeroOrdre) { |
String postData = ""; |
postData += "&action=DELETE"; |
181,12 → 186,11 |
} |
@Override |
public void onResponseReceived(Request request, |
Response response) { |
public void onResponseReceived(Request request, Response response) { |
if (response.getText().equals("OK")) { |
// stats |
Analytics.evenement("observation", "suppression", "{\"utilisateur\": \"" + identifiant + "\", \"numero_ordre\": \"" + numeroOrdre + "\"}"); |
} else { |
com.google.gwt.user.client.Window.alert(Msg.get("probleme-mise-a-jour-donnees")); |
return ; |
/trunk/src/org/tela_botanica/client/modeles/dao/TransmissionObservationAsynchroneDAO.java |
---|
4,6 → 4,7 |
import org.tela_botanica.client.modeles.objets.Configuration; |
import org.tela_botanica.client.modeles.objets.Utilisateur; |
import org.tela_botanica.client.observation.ObservationModele; |
import org.tela_botanica.client.util.Analytics; |
import com.google.gwt.http.client.Request; |
import org.tela_botanica.client.util.RequestBuilderWithCredentials; |
19,7 → 20,7 |
om = observationModele ; |
} |
public void transmettreObservations(final Rafraichissable r, String identifiant, String idsObs, boolean publier) { |
public void transmettreObservations(final Rafraichissable r, final String identifiant, final String idsObs, final boolean publier) { |
// on envoie le get asynchrone |
String post = "&transmission="; |
45,8 → 46,16 |
} |
@Override |
public void onResponseReceived(Request request, |
Response response) { |
public void onResponseReceived(Request request, Response response) { |
// stats |
String action = ""; |
if (publier) { |
action = "rendre-publiques"; |
} else { |
action = "rendre-privees"; |
} |
Analytics.evenement("observation", action, "{\"utilisateur\": \"" + identifiant + "\", \"observations\": \"" + idsObs + "\"}"); |
// Attention OK n'est pas un terme à traduire ici |
r.rafraichir("OK",true); |
} |
/trunk/src/org/tela_botanica/client/modeles/objets/Configuration.java |
---|
1,18 → 1,10 |
package org.tela_botanica.client.modeles.objets; |
import java.util.ArrayList; |
import java.util.HashMap; |
import java.util.Iterator; |
import java.util.List; |
import java.util.Map; |
import com.google.gwt.i18n.client.Dictionary; |
import com.google.gwt.json.client.JSONObject; |
import com.google.gwt.json.client.JSONParser; |
import com.google.gwt.json.client.JSONValue; |
import com.google.gwt.user.client.Window; |
import com.google.gwt.user.client.Window.Location; |
import com.sun.org.apache.bcel.internal.generic.RETURN; |
/** |
* Classe chargeant certains paramètres de configuration à partir d'un fichier |
46,10 → 38,6 |
private static String lienEfloreBaseUrl; |
private static String refTax; |
private static String refTaxVersion; |
private static String licence =""; |
private static String formatOriginal = ""; |
84,6 → 72,8 |
private static String chorologieAvertissementCourriel = ""; |
private static boolean prod = false; |
/** |
* Constructeur sans argument |
*/ |
166,6 → 156,8 |
languesDisponibles = Dictionary.getDictionary("configuration").get("languesDisponibles"); |
chorologieAvertissementCourriel = Dictionary.getDictionary("configuration").get("chorologieAvertissementCourriel"); |
prod = Boolean.parseBoolean(Dictionary.getDictionary("configuration").get("prod")); |
// Pour test, l'activation de l'ajout des champs étendus est activable ou désactivable par |
// l'url |
341,4 → 333,8 |
public static String getChorologieAvertissementCourriel() { |
return chorologieAvertissementCourriel; |
} |
public static boolean isProd() { |
return prod; |
} |
} |
/trunk/war/cel2.html |
---|
47,16 → 47,14 |
<link rel="stylesheet" href="cel2.css"> |
<link rel="stylesheet" href="GwtExt.css"> |
<script> |
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ |
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), |
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) |
})(window,document,'script','//www.google-analytics.com/analytics.js','ga'); |
ga('create', 'UA-20092557-1', 'auto'); |
ga('require', 'displayfeatures'); |
ga('send', 'pageview'); |
ga('create', 'UA-57885-6', 'auto'); |
</script> |
</head> |
/trunk/war/config.defaut.js |
---|
1,5 → 1,6 |
// à renommer en config.js |
var configuration = { |
prod: false, // si true, enverra notamment des stats à Google Analytics |
identificationBaseUrl:"https://localhost/annuaire/jrest/Auth", |
serviceBaseUrl:"http://localhost/jrest", |
suiviBugUrl:"http://www.tela-botanica.net/suivi/index.php?do=newtask&project=2", |
/trunk/. |
---|
Property changes: |
Modified: svn:mergeinfo |
Merged /branches/v2.24-sarcloir:r2844-2845 |