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) {