FR [2893090] - Implement remember me
https://sourceforge.net/tracker/?func=detail&atid=955896&aid=2893090&group_id=176962 Implemented sysconfig keys to control the feature - it can be configured now to allow saving User/Password/None for zk or swing
This commit is contained in:
parent
b32c97c23d
commit
b93ee106b0
|
@ -55,7 +55,7 @@ public class MSystem extends X_AD_System
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = 5528932721084369075L;
|
private static final long serialVersionUID = 8639311032004561198L;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load System Record
|
* Load System Record
|
||||||
|
@ -461,6 +461,37 @@ public class MSystem extends X_AD_System
|
||||||
*/
|
*/
|
||||||
} // info
|
} // info
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Allow remember me feature
|
||||||
|
* ZK_LOGIN_ALLOW_REMEMBER_ME and SWING_ALLOW_REMEMBER_ME parameter allow the next values
|
||||||
|
* U - Allow remember the username (default for zk)
|
||||||
|
* P - Allow remember the username and password (default for swing)
|
||||||
|
* N - None
|
||||||
|
*
|
||||||
|
* @return boolean representing if remember me feature is allowed
|
||||||
|
*/
|
||||||
|
private static final String SYSTEM_ALLOW_REMEMBER_USER = "U";
|
||||||
|
private static final String SYSTEM_ALLOW_REMEMBER_PASSWORD = "P";
|
||||||
|
|
||||||
|
public static boolean isZKRememberUserAllowed() {
|
||||||
|
String ca = MSysConfig.getValue("ZK_LOGIN_ALLOW_REMEMBER_ME", SYSTEM_ALLOW_REMEMBER_USER);
|
||||||
|
return (ca.equalsIgnoreCase(SYSTEM_ALLOW_REMEMBER_USER) || ca.equalsIgnoreCase(SYSTEM_ALLOW_REMEMBER_PASSWORD));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isZKRememberPasswordAllowed() {
|
||||||
|
String ca = MSysConfig.getValue("ZK_LOGIN_ALLOW_REMEMBER_ME", SYSTEM_ALLOW_REMEMBER_USER);
|
||||||
|
return (ca.equalsIgnoreCase(SYSTEM_ALLOW_REMEMBER_PASSWORD));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isSwingRememberUserAllowed() {
|
||||||
|
String ca = MSysConfig.getValue("SWING_LOGIN_ALLOW_REMEMBER_ME", SYSTEM_ALLOW_REMEMBER_PASSWORD);
|
||||||
|
return (ca.equalsIgnoreCase(SYSTEM_ALLOW_REMEMBER_USER) || ca.equalsIgnoreCase(SYSTEM_ALLOW_REMEMBER_PASSWORD));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean isSwingRememberPasswordAllowed() {
|
||||||
|
String ca = MSysConfig.getValue("SWING_LOGIN_ALLOW_REMEMBER_ME", SYSTEM_ALLOW_REMEMBER_PASSWORD);
|
||||||
|
return (ca.equalsIgnoreCase(SYSTEM_ALLOW_REMEMBER_PASSWORD));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test
|
* Test
|
||||||
|
|
|
@ -318,8 +318,11 @@ public class Login
|
||||||
//
|
//
|
||||||
if (Ini.isClient())
|
if (Ini.isClient())
|
||||||
{
|
{
|
||||||
Ini.setProperty(Ini.P_UID, app_user);
|
if (MSystem.isSwingRememberUserAllowed())
|
||||||
if (Ini.isPropertyBool(Ini.P_STORE_PWD))
|
Ini.setProperty(Ini.P_UID, app_user);
|
||||||
|
else
|
||||||
|
Ini.setProperty(Ini.P_UID, "");
|
||||||
|
if (Ini.isPropertyBool(Ini.P_STORE_PWD) && MSystem.isSwingRememberPasswordAllowed())
|
||||||
Ini.setProperty(Ini.P_PWD, app_pwd);
|
Ini.setProperty(Ini.P_PWD, app_pwd);
|
||||||
|
|
||||||
m_connectionProfile = rs.getString(4); // User Based
|
m_connectionProfile = rs.getString(4); // User Based
|
||||||
|
|
|
@ -53,6 +53,7 @@ import org.compiere.db.CConnection;
|
||||||
import org.compiere.grid.ed.VDate;
|
import org.compiere.grid.ed.VDate;
|
||||||
import org.compiere.minigrid.MiniTable;
|
import org.compiere.minigrid.MiniTable;
|
||||||
import org.compiere.model.MRole;
|
import org.compiere.model.MRole;
|
||||||
|
import org.compiere.model.MSystem;
|
||||||
import org.compiere.model.MUser;
|
import org.compiere.model.MUser;
|
||||||
import org.compiere.print.CPrinter;
|
import org.compiere.print.CPrinter;
|
||||||
import org.compiere.swing.CButton;
|
import org.compiere.swing.CButton;
|
||||||
|
@ -257,15 +258,18 @@ public final class Preference extends CDialog
|
||||||
customizePane.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
|
customizePane.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
|
||||||
|
|
||||||
Border insetBorder = BorderFactory.createEmptyBorder(2, 2, 2, 0);
|
Border insetBorder = BorderFactory.createEmptyBorder(2, 2, 2, 0);
|
||||||
CPanel loginPanel = new CPanel();
|
if (MSystem.isSwingRememberPasswordAllowed()) {
|
||||||
loginPanel.setBorder(BorderFactory.createTitledBorder(Msg.getMsg(Env.getCtx(), "Login")));
|
CPanel loginPanel = new CPanel();
|
||||||
loginPanel.setLayout(new GridLayout(1, 2));
|
loginPanel.setBorder(BorderFactory.createTitledBorder(Msg.getMsg(Env.getCtx(), "Login")));
|
||||||
autoLogin.setBorder(insetBorder);
|
loginPanel.setLayout(new GridLayout(1, 2));
|
||||||
storePassword.setBorder(insetBorder);
|
autoLogin.setBorder(insetBorder);
|
||||||
loginPanel.add(autoLogin);
|
storePassword.setBorder(insetBorder);
|
||||||
loginPanel.add(storePassword);
|
loginPanel.add(autoLogin);
|
||||||
customizePane.add(loginPanel, new GridBagConstraints(0, 0, 1, 1, 1.0, 0.0
|
loginPanel.add(storePassword);
|
||||||
,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(2, 0, 2, 0), 0, 0));
|
|
||||||
|
customizePane.add(loginPanel, new GridBagConstraints(0, 0, 1, 1, 1.0, 0.0
|
||||||
|
,GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(2, 0, 2, 0), 0, 0));
|
||||||
|
}
|
||||||
|
|
||||||
CPanel windowPanel = new CPanel();
|
CPanel windowPanel = new CPanel();
|
||||||
windowPanel.setBorder(BorderFactory.createTitledBorder(Msg.getMsg(Env.getCtx(), "Window")));
|
windowPanel.setBorder(BorderFactory.createTitledBorder(Msg.getMsg(Env.getCtx(), "Window")));
|
||||||
|
@ -480,10 +484,15 @@ public final class Preference extends CDialog
|
||||||
logMigrationScript.setEnabled(false);
|
logMigrationScript.setEnabled(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// AutoLogin
|
if (MSystem.isSwingRememberPasswordAllowed()) {
|
||||||
autoLogin.setSelected(Ini.isPropertyBool(Ini.P_A_LOGIN));
|
// AutoLogin
|
||||||
// Save Password
|
autoLogin.setSelected(Ini.isPropertyBool(Ini.P_A_LOGIN));
|
||||||
storePassword.setSelected(Ini.isPropertyBool(Ini.P_STORE_PWD));
|
// Save Password
|
||||||
|
storePassword.setSelected(Ini.isPropertyBool(Ini.P_STORE_PWD));
|
||||||
|
} else {
|
||||||
|
autoLogin.setSelected(false);
|
||||||
|
storePassword.setSelected(false);
|
||||||
|
}
|
||||||
// Show Acct Tab
|
// Show Acct Tab
|
||||||
if (MRole.getDefault().isShowAcct())
|
if (MRole.getDefault().isShowAcct())
|
||||||
showAcct.setSelected(Ini.isPropertyBool(Ini.P_SHOW_ACCT));
|
showAcct.setSelected(Ini.isPropertyBool(Ini.P_SHOW_ACCT));
|
||||||
|
@ -566,10 +575,15 @@ public final class Preference extends CDialog
|
||||||
Ini.setProperty(Ini.P_ADEMPIERESYS, adempiereSys.isSelected());
|
Ini.setProperty(Ini.P_ADEMPIERESYS, adempiereSys.isSelected());
|
||||||
// LogMigrationScript
|
// LogMigrationScript
|
||||||
Ini.setProperty(Ini.P_LOGMIGRATIONSCRIPT, logMigrationScript.isSelected());
|
Ini.setProperty(Ini.P_LOGMIGRATIONSCRIPT, logMigrationScript.isSelected());
|
||||||
// AutoLogin
|
if (MSystem.isSwingRememberPasswordAllowed()) {
|
||||||
Ini.setProperty(Ini.P_A_LOGIN, (autoLogin.isSelected()));
|
// AutoLogin
|
||||||
// Save Password
|
Ini.setProperty(Ini.P_A_LOGIN, (autoLogin.isSelected()));
|
||||||
Ini.setProperty(Ini.P_STORE_PWD, (storePassword.isSelected()));
|
// Save Password
|
||||||
|
Ini.setProperty(Ini.P_STORE_PWD, (storePassword.isSelected()));
|
||||||
|
} else {
|
||||||
|
Ini.setProperty(Ini.P_A_LOGIN, false);
|
||||||
|
Ini.setProperty(Ini.P_STORE_PWD, false);
|
||||||
|
}
|
||||||
// Show Acct Tab
|
// Show Acct Tab
|
||||||
Ini.setProperty(Ini.P_SHOW_ACCT, (showAcct.isSelected()));
|
Ini.setProperty(Ini.P_SHOW_ACCT, (showAcct.isSelected()));
|
||||||
Env.setContext(Env.getCtx(), "#ShowAcct", (showAcct.isSelected()));
|
Env.setContext(Env.getCtx(), "#ShowAcct", (showAcct.isSelected()));
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
-- Dec 14, 2009 6:16:10 PM COT
|
||||||
|
-- FR2893090_Implement remember me
|
||||||
|
INSERT INTO AD_SysConfig (AD_Client_ID,AD_Org_ID,AD_SysConfig_ID,ConfigurationLevel,Created,CreatedBy,Description,EntityType,IsActive,Name,Updated,UpdatedBy,Value) VALUES (0,0,50037,'S',TO_DATE('2009-12-14 18:16:10','YYYY-MM-DD HH24:MI:SS'),100,'Allow remember me on zkwebui - allowed values [U]ser / [P]assword / [N]one','D','Y','ZK_LOGIN_ALLOW_REMEMBER_ME',TO_DATE('2009-12-14 18:16:10','YYYY-MM-DD HH24:MI:SS'),100,'U')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 14, 2009 6:16:24 PM COT
|
||||||
|
INSERT INTO AD_SysConfig (AD_Client_ID,AD_Org_ID,AD_SysConfig_ID,ConfigurationLevel,Created,CreatedBy,Description,EntityType,IsActive,Name,Updated,UpdatedBy,Value) VALUES (0,0,50038,'S',TO_DATE('2009-12-14 18:16:23','YYYY-MM-DD HH24:MI:SS'),100,'Allow remember me on swing - allowed values [U]ser / [P]assword / [N]one','D','Y','SWING_LOGIN_ALLOW_REMEMBER_ME',TO_DATE('2009-12-14 18:16:23','YYYY-MM-DD HH24:MI:SS'),100,'P')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 14, 2009 8:32:30 PM COT
|
||||||
|
INSERT INTO AD_Message (AD_Client_ID,AD_Message_ID,AD_Org_ID,Created,CreatedBy,EntityType,IsActive,MsgText,MsgType,Updated,UpdatedBy,Value) VALUES (0,53091,0,TO_DATE('2009-12-14 20:32:29','YYYY-MM-DD HH24:MI:SS'),100,'D','Y','Remember Me','I',TO_DATE('2009-12-14 20:32:29','YYYY-MM-DD HH24:MI:SS'),100,'RememberMe')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 14, 2009 8:32:30 PM COT
|
||||||
|
INSERT INTO AD_Message_Trl (AD_Language,AD_Message_ID, MsgText,MsgTip, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Message_ID, t.MsgText,t.MsgTip, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Message t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Message_ID=53091 AND NOT EXISTS (SELECT * FROM AD_Message_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Message_ID=t.AD_Message_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 14, 2009 8:32:51 PM COT
|
||||||
|
UPDATE AD_Message_Trl SET IsTranslated='Y',MsgText='Recordar mis datos',Updated=TO_DATE('2009-12-14 20:32:51','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Message_ID=53091 AND AD_Language LIKE 'es_%'
|
||||||
|
;
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
-- Dec 14, 2009 6:16:10 PM COT
|
||||||
|
-- FR2893090_Implement remember me
|
||||||
|
INSERT INTO AD_SysConfig (AD_Client_ID,AD_Org_ID,AD_SysConfig_ID,ConfigurationLevel,Created,CreatedBy,Description,EntityType,IsActive,Name,Updated,UpdatedBy,Value) VALUES (0,0,50037,'S',TO_TIMESTAMP('2009-12-14 18:16:10','YYYY-MM-DD HH24:MI:SS'),100,'Allow remember me on zkwebui - allowed values [U]ser / [P]assword / [N]one','D','Y','ZK_LOGIN_ALLOW_REMEMBER_ME',TO_TIMESTAMP('2009-12-14 18:16:10','YYYY-MM-DD HH24:MI:SS'),100,'U')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 14, 2009 6:16:24 PM COT
|
||||||
|
INSERT INTO AD_SysConfig (AD_Client_ID,AD_Org_ID,AD_SysConfig_ID,ConfigurationLevel,Created,CreatedBy,Description,EntityType,IsActive,Name,Updated,UpdatedBy,Value) VALUES (0,0,50038,'S',TO_TIMESTAMP('2009-12-14 18:16:23','YYYY-MM-DD HH24:MI:SS'),100,'Allow remember me on swing - allowed values [U]ser / [P]assword / [N]one','D','Y','SWING_LOGIN_ALLOW_REMEMBER_ME',TO_TIMESTAMP('2009-12-14 18:16:23','YYYY-MM-DD HH24:MI:SS'),100,'P')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 14, 2009 8:32:30 PM COT
|
||||||
|
INSERT INTO AD_Message (AD_Client_ID,AD_Message_ID,AD_Org_ID,Created,CreatedBy,EntityType,IsActive,MsgText,MsgType,Updated,UpdatedBy,Value) VALUES (0,53091,0,TO_TIMESTAMP('2009-12-14 20:32:29','YYYY-MM-DD HH24:MI:SS'),100,'D','Y','Remember Me','I',TO_TIMESTAMP('2009-12-14 20:32:29','YYYY-MM-DD HH24:MI:SS'),100,'RememberMe')
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 14, 2009 8:32:30 PM COT
|
||||||
|
INSERT INTO AD_Message_Trl (AD_Language,AD_Message_ID, MsgText,MsgTip, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy) SELECT l.AD_Language,t.AD_Message_ID, t.MsgText,t.MsgTip, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy FROM AD_Language l, AD_Message t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Message_ID=53091 AND NOT EXISTS (SELECT * FROM AD_Message_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Message_ID=t.AD_Message_ID)
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Dec 14, 2009 8:32:51 PM COT
|
||||||
|
UPDATE AD_Message_Trl SET IsTranslated='Y',MsgText='Recordar mis datos',Updated=TO_TIMESTAMP('2009-12-14 20:32:51','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Message_ID=53091 AND AD_Language LIKE 'es_%'
|
||||||
|
;
|
||||||
|
|
|
@ -37,6 +37,7 @@ import org.adempiere.webui.util.UserPreference;
|
||||||
import org.compiere.model.MRole;
|
import org.compiere.model.MRole;
|
||||||
import org.compiere.model.MSession;
|
import org.compiere.model.MSession;
|
||||||
import org.compiere.model.MSysConfig;
|
import org.compiere.model.MSysConfig;
|
||||||
|
import org.compiere.model.MSystem;
|
||||||
import org.compiere.model.MUser;
|
import org.compiere.model.MUser;
|
||||||
import org.compiere.util.CLogger;
|
import org.compiere.util.CLogger;
|
||||||
import org.compiere.util.Env;
|
import org.compiere.util.Env;
|
||||||
|
@ -244,7 +245,7 @@ public class AdempiereWebUI extends Window implements EventListener, IWebClient
|
||||||
currSess.setAttribute("execution.carryover", eco);
|
currSess.setAttribute("execution.carryover", eco);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ("Y".equalsIgnoreCase(Env.getContext(ctx, BrowserToken.REMEMBER_ME)))
|
if ("Y".equalsIgnoreCase(Env.getContext(ctx, BrowserToken.REMEMBER_ME)) && MSystem.isZKRememberUserAllowed())
|
||||||
{
|
{
|
||||||
MUser user = MUser.get(ctx);
|
MUser user = MUser.get(ctx);
|
||||||
BrowserToken.save(mSession, user);
|
BrowserToken.save(mSession, user);
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
package org.adempiere.webui.panel;
|
package org.adempiere.webui.panel;
|
||||||
|
|
||||||
import java.text.MessageFormat;
|
import java.text.MessageFormat;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
@ -45,6 +46,7 @@ import org.adempiere.webui.util.UserPreference;
|
||||||
import org.adempiere.webui.window.LoginWindow;
|
import org.adempiere.webui.window.LoginWindow;
|
||||||
import org.compiere.Adempiere;
|
import org.compiere.Adempiere;
|
||||||
import org.compiere.model.MSession;
|
import org.compiere.model.MSession;
|
||||||
|
import org.compiere.model.MSystem;
|
||||||
import org.compiere.model.MUser;
|
import org.compiere.model.MUser;
|
||||||
import org.compiere.util.CLogger;
|
import org.compiere.util.CLogger;
|
||||||
import org.compiere.util.DB;
|
import org.compiere.util.DB;
|
||||||
|
@ -178,17 +180,19 @@ public class LoginPanel extends Window implements EventListener
|
||||||
tr.appendChild(td);
|
tr.appendChild(td);
|
||||||
td.appendChild(lstLanguage);
|
td.appendChild(lstLanguage);
|
||||||
|
|
||||||
tr = new Tr();
|
if (MSystem.isZKRememberUserAllowed()) {
|
||||||
tr.setId("rowRememberMe");
|
tr = new Tr();
|
||||||
table.appendChild(tr);
|
tr.setId("rowRememberMe");
|
||||||
td = new Td();
|
table.appendChild(tr);
|
||||||
tr.appendChild(td);
|
td = new Td();
|
||||||
td.setSclass(ITheme.LOGIN_LABEL_CLASS);
|
tr.appendChild(td);
|
||||||
td.appendChild(new Label(""));
|
td.setSclass(ITheme.LOGIN_LABEL_CLASS);
|
||||||
td = new Td();
|
td.appendChild(new Label(""));
|
||||||
td.setSclass(ITheme.LOGIN_FIELD_CLASS);
|
td = new Td();
|
||||||
tr.appendChild(td);
|
td.setSclass(ITheme.LOGIN_FIELD_CLASS);
|
||||||
td.appendChild(chkRememberMe);
|
tr.appendChild(td);
|
||||||
|
td.appendChild(chkRememberMe);
|
||||||
|
}
|
||||||
|
|
||||||
div = new Div();
|
div = new Div();
|
||||||
div.setSclass(ITheme.LOGIN_BOX_FOOTER_CLASS);
|
div.setSclass(ITheme.LOGIN_BOX_FOOTER_CLASS);
|
||||||
|
@ -218,12 +222,16 @@ public class LoginPanel extends Window implements EventListener
|
||||||
String token = data[1];
|
String token = data[1];
|
||||||
if (BrowserToken.validateToken(session, user, token))
|
if (BrowserToken.validateToken(session, user, token))
|
||||||
{
|
{
|
||||||
txtUserId.setValue(user.getName());
|
if (MSystem.isZKRememberUserAllowed()) {
|
||||||
onUserIdChange();
|
txtUserId.setValue(user.getName());
|
||||||
txtPassword.setValue(token);
|
onUserIdChange();
|
||||||
txtPassword.setAttribute("user.token.hash", token);
|
chkRememberMe.setChecked(true);
|
||||||
txtPassword.setAttribute("user.token.sid", AD_Session_ID);
|
}
|
||||||
chkRememberMe.setChecked(true);
|
if (MSystem.isZKRememberPasswordAllowed()) {
|
||||||
|
txtPassword.setValue(token);
|
||||||
|
txtPassword.setAttribute("user.token.hash", token);
|
||||||
|
txtPassword.setAttribute("user.token.sid", AD_Session_ID);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -278,6 +286,8 @@ public class LoginPanel extends Window implements EventListener
|
||||||
lstLanguage.appendItem(langName, language.getAD_Language());
|
lstLanguage.appendItem(langName, language.getAD_Language());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
chkRememberMe = new Checkbox(Msg.getMsg(Language.getBaseAD_Language(), "RememberMe"));
|
||||||
|
|
||||||
//set base language
|
//set base language
|
||||||
String baseLanguage = Language.getBaseLanguage().getName();
|
String baseLanguage = Language.getBaseLanguage().getName();
|
||||||
for(int i = 0; i < lstLanguage.getItemCount(); i++)
|
for(int i = 0; i < lstLanguage.getItemCount(); i++)
|
||||||
|
@ -290,9 +300,6 @@ public class LoginPanel extends Window implements EventListener
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO: localization
|
|
||||||
chkRememberMe = new Checkbox("Remember Me");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onEvent(Event event)
|
public void onEvent(Event event)
|
||||||
|
@ -349,10 +356,15 @@ public class LoginPanel extends Window implements EventListener
|
||||||
{
|
{
|
||||||
Language language = findLanguage(langName);
|
Language language = findLanguage(langName);
|
||||||
|
|
||||||
res = ResourceBundle.getBundle(RESOURCE, language.getLocale());
|
// Locales
|
||||||
|
Locale loc = language.getLocale();
|
||||||
|
Locale.setDefault(loc);
|
||||||
|
res = ResourceBundle.getBundle(RESOURCE, loc);
|
||||||
|
|
||||||
lblUserId.setValue(res.getString("User"));
|
lblUserId.setValue(res.getString("User"));
|
||||||
lblPassword.setValue(res.getString("Password"));
|
lblPassword.setValue(res.getString("Password"));
|
||||||
lblLanguage.setValue(res.getString("Language"));
|
lblLanguage.setValue(res.getString("Language"));
|
||||||
|
chkRememberMe.setLabel(Msg.getMsg(language, "RememberMe"));
|
||||||
}
|
}
|
||||||
|
|
||||||
private Language findLanguage(String langName) {
|
private Language findLanguage(String langName) {
|
||||||
|
|
|
@ -21,6 +21,7 @@ import java.util.logging.Level;
|
||||||
|
|
||||||
import org.compiere.Adempiere;
|
import org.compiere.Adempiere;
|
||||||
import org.compiere.model.MSession;
|
import org.compiere.model.MSession;
|
||||||
|
import org.compiere.model.MSystem;
|
||||||
import org.compiere.model.MUser;
|
import org.compiere.model.MUser;
|
||||||
import org.compiere.util.CLogger;
|
import org.compiere.util.CLogger;
|
||||||
import org.zkoss.zk.au.out.AuScript;
|
import org.zkoss.zk.au.out.AuScript;
|
||||||
|
@ -126,7 +127,11 @@ public final class BrowserToken {
|
||||||
BASE64Encoder encoder = new BASE64Encoder();
|
BASE64Encoder encoder = new BASE64Encoder();
|
||||||
digest.reset();
|
digest.reset();
|
||||||
digest.update(session.getWebSession().getBytes("UTF-8"));
|
digest.update(session.getWebSession().getBytes("UTF-8"));
|
||||||
String password = user.getPassword();
|
String password = null;
|
||||||
|
if (MSystem.isZKRememberPasswordAllowed())
|
||||||
|
password = user.getPassword();
|
||||||
|
else
|
||||||
|
password = new String("");
|
||||||
byte[] input = digest.digest(password.getBytes("UTF-8"));
|
byte[] input = digest.digest(password.getBytes("UTF-8"));
|
||||||
String hash = encoder.encode(input);
|
String hash = encoder.encode(input);
|
||||||
hash = URLEncoder.encode(hash, "UTF-8");
|
hash = URLEncoder.encode(hash, "UTF-8");
|
||||||
|
|
Loading…
Reference in New Issue