diff --git a/pom.xml b/pom.xml
index 01a5154..f866987 100644
--- a/pom.xml
+++ b/pom.xml
@@ -25,6 +25,10 @@
jboss
http://repository.jboss.org/maven2/
+
+ mvnrepo
+ http://mvnrepository.googlecode.com/svn/repo
+
2.2.2
@@ -144,9 +148,9 @@
- com.googlecode.json-simple
- json-simple
- 1.1
+ org.json
+ json
+ 20090211
diff --git a/src/main/java/org/sgrp/singer/db/.UserManager.java.swp b/src/main/java/org/sgrp/singer/db/.UserManager.java.swp
index 02088f2..0b31cb5 100644
Binary files a/src/main/java/org/sgrp/singer/db/.UserManager.java.swp and b/src/main/java/org/sgrp/singer/db/.UserManager.java.swp differ
diff --git a/src/main/java/org/sgrp/singer/db/OrderEmailManager.java b/src/main/java/org/sgrp/singer/db/OrderEmailManager.java
index c82c224..82e66bd 100644
--- a/src/main/java/org/sgrp/singer/db/OrderEmailManager.java
+++ b/src/main/java/org/sgrp/singer/db/OrderEmailManager.java
@@ -186,6 +186,7 @@ public void generateProviderEmail(int orderid, PIDMemberForm membForm, HashMap> cMap = eMap.get(pemail);
try {
String providerHTML = getProviderHTMLMessage(membForm, cMap, orderid, comments, smta);
+ pemail = "l.matteis@cgiar.org";
boolean sent = MailUtils.sendOrderMail(pemail, "Germplasm request #"+orderid+" through SINGER - PLEASE DO NOT RESPOND TO THIS EMAIL ", providerHTML);
System.out.println("Email Sent " + sent +" to "+pemail+"\n"+providerHTML);
} catch (Exception e) {
diff --git a/src/main/java/org/sgrp/singer/db/UserManager.java b/src/main/java/org/sgrp/singer/db/UserManager.java
index abc4bb1..04bcd27 100644
--- a/src/main/java/org/sgrp/singer/db/UserManager.java
+++ b/src/main/java/org/sgrp/singer/db/UserManager.java
@@ -1,5 +1,9 @@
package org.sgrp.singer.db;
+import java.net.*;
+import java.io.*;
+import java.util.*;
+
import java.net.MalformedURLException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
@@ -10,6 +14,8 @@
import java.sql.Statement;
import java.util.Map;
+import org.apache.log4j.Logger;
+
import javax.servlet.http.HttpSession;
import org.apache.xmlrpc.XmlRpcException;
@@ -21,9 +27,13 @@
import org.sgrp.singer.indexer.Keywords;
import org.sgrp.singer.xmlrpc.DrupalXmlRpcService;
+import org.json.*;
+
public class UserManager {
public static UserManager mgr;
+ private static Logger LOG = Logger.getLogger("");
+
public void saveUser(MemberForm memb) throws SQLException {
if (memb == null) { throw new SQLException(ResourceManager.getString("save.user.null")); }
Connection conn = null;
@@ -200,28 +210,50 @@ public MemberForm getUser(String userId) throws SQLException {
* @throws XmlRpcException
* @throws Exception
*/
- public PIDMemberForm loginPID (String userId, String password) throws InvalidKeyException, IllegalStateException, NoSuchAlgorithmException, MalformedURLException, XmlRpcException
+ public PIDMemberForm loginPID (String userId, String password)
{
PIDMemberForm member = new PIDMemberForm();
//final String serviceURL = "http://mls.planttreaty.org/itt/services/xmlrpc";
- final String serviceURL = "http://mls.planttreaty.org/Ex_itt/services/xmlrpc";
+ //final String serviceURL = "http://mls.planttreaty.org/Ex_itt/services/xmlrpc";
+ //final String serviceURL = "http://www.itworks.it/itt/index.php?r=extsys/getUserDetails&esUsername=SINGER&esPassword=F3rrar1n0&username=" + userId + "&password=" + password;
+ final String serviceURL = "https://mls.planttreaty.org/itt/index.php?r=extsys/getUserDetails&esUsername=SINGER&esPassword=F3rrar1n0&username=" + userId + "&password=" + password;
DrupalXmlRpcService service;
try
{
- service = new DrupalXmlRpcService("www.singer.cgiar.org", "73f568378f65c59b3c264186311602b4", serviceURL);
- service.connect();
- Integer uid = service.login(userId, password);
-
- Map userDetails = ((Map)((Object[])service.getUserDetails(uid))[0]);
-
- member.setNfname(userDetails.get(AccessionConstants.USER_FIRST_NAME));
- member.setNlname(userDetails.get(AccessionConstants.USER_LAST_NAME));
+ // make request to the treaty server
+ URL pidServer = new URL(serviceURL);
+ URLConnection pidConn = pidServer.openConnection();
+ BufferedReader in = new BufferedReader(
+ new InputStreamReader(
+ pidConn.getInputStream()));
+ String inputLine;
+ StringBuffer response = new StringBuffer();
+
+ while ((inputLine = in.readLine()) != null)
+ response.append(inputLine);
+
+ in.close();
+
+ // parse the json response
+ JSONObject obj = new JSONObject(response.toString());
+ if(obj.has("errorCode")) {
+ throw new Exception(obj.getString("errorMessage"));
+ }
+
+ // login successful
+ member.setNfname(obj.getString("name"));
+ member.setNlname(obj.getString("surname"));
member.setNemail(null);
member.setNCompany(null);
- member.setNType(userDetails.get(AccessionConstants.USER_TYPE));
- String cty = userDetails.get(AccessionConstants.USER_COUNTRY);
- member.setNCountry(Keywords.getInstance().getAllOrigMap().get(AccessionConstants.COUNTRY+cty.toLowerCase()));
- member.setNuserpid(userDetails.get(AccessionConstants.USER_PID));
+ member.setNType(obj.getString("type"));
+ //String cty = userDetails.get(AccessionConstants.USER_COUNTRY);
+ member.setNCountry(obj.getString("country"));
+ member.setNuserpid(obj.getString("pid"));
+
+ member.setNShippingAddress(obj.getString("shipAddress"));
+ member.setNZip(null);
+ member.setNCity(null);
+ /*
if(userDetails.get(AccessionConstants.USER_ADDRESS_TO_USE).equals("Another"))
{
member.setNShippingAddress(userDetails.get(AccessionConstants.USER_SHIPPING_ADDRESS));
@@ -234,17 +266,16 @@ public PIDMemberForm loginPID (String userId, String password) throws InvalidKey
member.setNZip(userDetails.get(AccessionConstants.USER_POSTAL_CODE));
member.setNCity(userDetails.get(AccessionConstants.USER_CITY));
}
- member.setNemail(userDetails.get(AccessionConstants.USER_MAIL));
+ */
+ member.setNemail(obj.getString("email"));
member.setValidated(true);
-
- service.logout();
}
//This Exception is raised when the authentication failed
- catch (XmlRpcException e)
+ catch (Exception e)
{
//e.printStackTrace();
member.setValidated(false);
- throw e;
+ return null;
}
return member;
diff --git a/src/main/java/org/sgrp/singer/form/.LoginPIDForm.java.swp b/src/main/java/org/sgrp/singer/form/.LoginPIDForm.java.swp
deleted file mode 100644
index fada8f4..0000000
Binary files a/src/main/java/org/sgrp/singer/form/.LoginPIDForm.java.swp and /dev/null differ
diff --git a/src/main/java/org/sgrp/singer/form/LoginPIDForm.java b/src/main/java/org/sgrp/singer/form/LoginPIDForm.java
index d56c9fe..3f50274 100644
--- a/src/main/java/org/sgrp/singer/form/LoginPIDForm.java
+++ b/src/main/java/org/sgrp/singer/form/LoginPIDForm.java
@@ -37,27 +37,19 @@ public ActionErrors validate(ActionMapping actionMapping, HttpServletRequest htt
if (!isNull(getUserid()) && !isNull(getUpassword()))
{
- try
- {
- memberDetails = UserManager.getInstance().loginPID(getUserid(), getUpassword());
- }
- catch (Exception e)
- {
- if (e instanceof XmlRpcException && "Wrong username or password.".equals(e.getMessage()))
- {
- /*If the user is not registered by the PID, we check if he is an ancient SINGER member*/
- if(UserManager.getInstance().loginValid(getUserid(), getUpassword()))
- {
- errors.add("oldLogin", ErrorConstants.getActionMessage(ErrorConstants.ERROR_OLD_SINGER_LOGIN));
- }
- else
- {
- errors.add("error", ErrorConstants.getActionMessage(ErrorConstants.ERROR_INVALID_LOGIN));
- }
- }
- else
- LOG.error(e);
- }
+ //LOG.info("login info: " + getUserid() + " --- " + getUpassword());
+ memberDetails = UserManager.getInstance().loginPID(getUserid(), getUpassword());
+ if(memberDetails == null) {
+ /*If the user is not registered by the PID, we check if he is an ancient SINGER member*/
+ if(UserManager.getInstance().loginValid(getUserid(), getUpassword()))
+ {
+ errors.add("oldLogin", ErrorConstants.getActionMessage(ErrorConstants.ERROR_OLD_SINGER_LOGIN));
+ }
+ else
+ {
+ errors.add("error", ErrorConstants.getActionMessage(ErrorConstants.ERROR_INVALID_LOGIN));
+ }
+ }
}
if (errors.size() > 0) {