From 72b21f1df1d9391cac0ba78438f0c12390cfcad9 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Tue, 15 May 2018 10:23:51 +0200 Subject: [PATCH] IDEMPIERE-2944 Preserve iDempiere session between sucessive webservice calls / fix login when using email - as reported by Pritesh Shah --- .../src/org/compiere/model/MUser.java | 27 +++---------------- .../adinterface/CompiereService.java | 8 +++++- 2 files changed, 11 insertions(+), 24 deletions(-) diff --git a/org.adempiere.base/src/org/compiere/model/MUser.java b/org.adempiere.base/src/org/compiere/model/MUser.java index 6e17c74ff0..956457c375 100644 --- a/org.adempiere.base/src/org/compiere/model/MUser.java +++ b/org.adempiere.base/src/org/compiere/model/MUser.java @@ -21,7 +21,6 @@ import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.sql.PreparedStatement; import java.sql.ResultSet; -import java.sql.SQLException; import java.sql.Timestamp; import java.util.ArrayList; import java.util.Date; @@ -237,28 +236,10 @@ public class MUser extends X_AD_User */ public static String getNameOfUser (int AD_User_ID) { - String name = "?"; - // Get ID - String sql = "SELECT Name FROM AD_User WHERE AD_User_ID=?"; - PreparedStatement pstmt = null; - ResultSet rs = null; - try - { - pstmt = DB.prepareStatement(sql, null); - pstmt.setInt(1, AD_User_ID); - rs = pstmt.executeQuery(); - if (rs.next()) - name = rs.getString(1); - } - catch (SQLException e) - { - s_log.log(Level.SEVERE, sql, e); - } - finally - { - DB.close(rs, pstmt); - } - return name; + MUser user = get(Env.getCtx(), AD_User_ID); + if (user.getAD_User_ID() != AD_User_ID) + return "?"; + return user.getName(); } // getNameOfUser diff --git a/org.idempiere.webservices/WEB-INF/src/org/idempiere/adinterface/CompiereService.java b/org.idempiere.webservices/WEB-INF/src/org/idempiere/adinterface/CompiereService.java index d063d53945..1b32318e58 100644 --- a/org.idempiere.webservices/WEB-INF/src/org/idempiere/adinterface/CompiereService.java +++ b/org.idempiere.webservices/WEB-INF/src/org/idempiere/adinterface/CompiereService.java @@ -25,6 +25,7 @@ import javax.servlet.http.HttpServletRequest; import org.adempiere.util.ServerContext; import org.compiere.model.MSession; +import org.compiere.model.MSysConfig; import org.compiere.model.MUser; import org.compiere.util.CLogger; import org.compiere.util.DB; @@ -271,7 +272,12 @@ public class CompiereService { m_AD_Role_ID = AD_Role_ID; m_M_Warehouse_ID = M_Warehouse_ID; m_locale = Lang; - m_userName = MUser.getNameOfUser(m_AD_User_ID); + boolean email_login = MSysConfig.getBooleanValue(MSysConfig.USE_EMAIL_FOR_LOGIN, false); + MUser user = MUser.get(getCtx(), m_AD_User_ID); + if (email_login) + m_userName = user.getEMail(); + else + m_userName = user.getName(); Env.setContext( getCtx(), "#AD_Language", Lang); m_language = Language.getLanguage(Lang);