Merge with d36c55018d81d9bd6c771488900167ad054eae3b
This commit is contained in:
commit
54db8b6742
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,8 @@
|
||||||
|
UPDATE GL_JournalLine SET Account_ID = (SELECT Account_ID FROM C_ValidCombination vc WHERE vc.C_ValidCombination_ID = GL_JournalLine.C_ValidCombination_ID);
|
||||||
|
;
|
||||||
|
|
||||||
|
UPDATE AD_System
|
||||||
|
SET LastMigrationScriptApplied='858_IDEMPIERE-344_GLJournalImprovement.sql'
|
||||||
|
WHERE LastMigrationScriptApplied<'858_IDEMPIERE-344_GLJournalImprovement.sql'
|
||||||
|
OR LastMigrationScriptApplied IS NULL
|
||||||
|
;
|
|
@ -0,0 +1,14 @@
|
||||||
|
-- Aug 1, 2012 4:43:04 PM COT
|
||||||
|
INSERT INTO AD_Message (MsgType,MsgText,AD_Message_ID,EntityType,AD_Message_UU,Value,IsActive,Updated,CreatedBy,UpdatedBy,AD_Client_ID,AD_Org_ID,Created) VALUES ('I','Select Role',200009,'D','15bdd556-85d4-4518-87e9-4ab298c49bb0','SelectRole','Y',TO_DATE('2012-08-01 16:43:01','YYYY-MM-DD HH24:MI:SS'),0,0,0,0,TO_DATE('2012-08-01 16:43:01','YYYY-MM-DD HH24:MI:SS'))
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Aug 1, 2012 4:43:04 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=200009 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)
|
||||||
|
;
|
||||||
|
|
||||||
|
UPDATE AD_System
|
||||||
|
SET LastMigrationScriptApplied='859_IDEMPIERE-354.sql'
|
||||||
|
WHERE LastMigrationScriptApplied<'859_IDEMPIERE-354.sql'
|
||||||
|
OR LastMigrationScriptApplied IS NULL
|
||||||
|
;
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
-- Aug 2, 2012 10:34:37 PM COT
|
||||||
|
-- IDEMPIERE-344 Improve usability for GL Journal
|
||||||
|
UPDATE AD_Field SET IsAllowCopy='N',Updated=TO_DATE('2012-08-02 22:34:37','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200189
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Aug 2, 2012 10:34:56 PM COT
|
||||||
|
UPDATE AD_Field SET IsAllowCopy='N',Updated=TO_DATE('2012-08-02 22:34:56','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200205
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Aug 2, 2012 10:35:00 PM COT
|
||||||
|
UPDATE AD_Field SET IsAllowCopy='N',Updated=TO_DATE('2012-08-02 22:35:00','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200206
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Aug 2, 2012 10:35:17 PM COT
|
||||||
|
UPDATE AD_Field SET IsAllowCopy='N',Updated=TO_DATE('2012-08-02 22:35:17','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200203
|
||||||
|
;
|
||||||
|
|
||||||
|
UPDATE AD_System
|
||||||
|
SET LastMigrationScriptApplied='861_IDEMPIERE-344_GLJournalImprovement.sql'
|
||||||
|
WHERE LastMigrationScriptApplied<'861_IDEMPIERE-344_GLJournalImprovement.sql'
|
||||||
|
OR LastMigrationScriptApplied IS NULL
|
||||||
|
;
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,8 @@
|
||||||
|
UPDATE GL_JournalLine SET Account_ID = (SELECT Account_ID FROM C_ValidCombination vc WHERE vc.C_ValidCombination_ID = GL_JournalLine.C_ValidCombination_ID);
|
||||||
|
;
|
||||||
|
|
||||||
|
UPDATE AD_System
|
||||||
|
SET LastMigrationScriptApplied='858_IDEMPIERE-344_GLJournalImprovement.sql'
|
||||||
|
WHERE LastMigrationScriptApplied<'858_IDEMPIERE-344_GLJournalImprovement.sql'
|
||||||
|
OR LastMigrationScriptApplied IS NULL
|
||||||
|
;
|
|
@ -0,0 +1,14 @@
|
||||||
|
-- Aug 1, 2012 4:43:04 PM COT
|
||||||
|
INSERT INTO AD_Message (MsgType,MsgText,AD_Message_ID,EntityType,AD_Message_UU,Value,IsActive,Updated,CreatedBy,UpdatedBy,AD_Client_ID,AD_Org_ID,Created) VALUES ('I','Select Role',200009,'D','15bdd556-85d4-4518-87e9-4ab298c49bb0','SelectRole','Y',TO_TIMESTAMP('2012-08-01 16:43:01','YYYY-MM-DD HH24:MI:SS'),0,0,0,0,TO_TIMESTAMP('2012-08-01 16:43:01','YYYY-MM-DD HH24:MI:SS'))
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Aug 1, 2012 4:43:04 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=200009 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)
|
||||||
|
;
|
||||||
|
|
||||||
|
UPDATE AD_System
|
||||||
|
SET LastMigrationScriptApplied='859_IDEMPIERE-354.sql'
|
||||||
|
WHERE LastMigrationScriptApplied<'859_IDEMPIERE-354.sql'
|
||||||
|
OR LastMigrationScriptApplied IS NULL
|
||||||
|
;
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
-- Aug 2, 2012 10:34:37 PM COT
|
||||||
|
-- IDEMPIERE-344 Improve usability for GL Journal
|
||||||
|
UPDATE AD_Field SET IsAllowCopy='N',Updated=TO_TIMESTAMP('2012-08-02 22:34:37','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200189
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Aug 2, 2012 10:34:56 PM COT
|
||||||
|
UPDATE AD_Field SET IsAllowCopy='N',Updated=TO_TIMESTAMP('2012-08-02 22:34:56','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200205
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Aug 2, 2012 10:35:00 PM COT
|
||||||
|
UPDATE AD_Field SET IsAllowCopy='N',Updated=TO_TIMESTAMP('2012-08-02 22:35:00','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200206
|
||||||
|
;
|
||||||
|
|
||||||
|
-- Aug 2, 2012 10:35:17 PM COT
|
||||||
|
UPDATE AD_Field SET IsAllowCopy='N',Updated=TO_TIMESTAMP('2012-08-02 22:35:17','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200203
|
||||||
|
;
|
||||||
|
|
||||||
|
UPDATE AD_System
|
||||||
|
SET LastMigrationScriptApplied='861_IDEMPIERE-344_GLJournalImprovement.sql'
|
||||||
|
WHERE LastMigrationScriptApplied<'861_IDEMPIERE-344_GLJournalImprovement.sql'
|
||||||
|
OR LastMigrationScriptApplied IS NULL
|
||||||
|
;
|
||||||
|
|
|
@ -18,10 +18,11 @@ package org.compiere.process;
|
||||||
|
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import org.compiere.model.MClient;
|
||||||
|
import org.compiere.model.MPasswordRule;
|
||||||
import org.compiere.model.MSysConfig;
|
import org.compiere.model.MSysConfig;
|
||||||
import org.compiere.model.MUser;
|
import org.compiere.model.MUser;
|
||||||
import org.compiere.util.Util;
|
import org.compiere.util.Util;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reset Password
|
* Reset Password
|
||||||
*
|
*
|
||||||
|
@ -30,10 +31,12 @@ import org.compiere.util.Util;
|
||||||
*/
|
*/
|
||||||
public class UserPassword extends SvrProcess
|
public class UserPassword extends SvrProcess
|
||||||
{
|
{
|
||||||
private int p_AD_User_ID = -1;
|
private int p_AD_User_ID = -1;
|
||||||
private String p_OldPassword = null;
|
private String p_OldPassword = null;
|
||||||
private String p_NewPassword = null;
|
private String p_NewPassword = null;
|
||||||
|
private String p_NewPasswordConfirm = null;
|
||||||
private String p_NewEMail = null;
|
private String p_NewEMail = null;
|
||||||
|
private String p_NewEMailConfirm = null;
|
||||||
private String p_NewEMailUser = null;
|
private String p_NewEMailUser = null;
|
||||||
private String p_NewEMailUserPW = null;
|
private String p_NewEMailUserPW = null;
|
||||||
|
|
||||||
|
@ -60,6 +63,10 @@ public class UserPassword extends SvrProcess
|
||||||
p_NewEMailUser = (String)para[i].getParameter();
|
p_NewEMailUser = (String)para[i].getParameter();
|
||||||
else if (name.equals("NewEMailUserPW"))
|
else if (name.equals("NewEMailUserPW"))
|
||||||
p_NewEMailUserPW = (String)para[i].getParameter();
|
p_NewEMailUserPW = (String)para[i].getParameter();
|
||||||
|
else if (name.equals("NewPasswordConfirm"))
|
||||||
|
p_NewPasswordConfirm=(String)para[i].getParameter();
|
||||||
|
else if (name.equals("NewEMailConfirm"))
|
||||||
|
p_NewEMailConfirm = (String)para[i].getParameter();
|
||||||
else
|
else
|
||||||
log.log(Level.SEVERE, "Unknown Parameter: " + name);
|
log.log(Level.SEVERE, "Unknown Parameter: " + name);
|
||||||
}
|
}
|
||||||
|
@ -87,18 +94,43 @@ public class UserPassword extends SvrProcess
|
||||||
|| p_AD_User_ID == 100 // change of SuperUser
|
|| p_AD_User_ID == 100 // change of SuperUser
|
||||||
|| !operator.isAdministrator())
|
|| !operator.isAdministrator())
|
||||||
throw new IllegalArgumentException("@OldPasswordMandatory@");
|
throw new IllegalArgumentException("@OldPasswordMandatory@");
|
||||||
}
|
} else {
|
||||||
// is entered Password correct ?
|
// is entered Password correct ?
|
||||||
else {
|
if (hash_password) {
|
||||||
if (hash_password){
|
if (!user.authenticateHash(p_OldPassword))
|
||||||
if (!user.authenticateHash(p_OldPassword) )
|
|
||||||
throw new IllegalArgumentException("@OldPasswordNoMatch@");
|
throw new IllegalArgumentException("@OldPasswordNoMatch@");
|
||||||
} else{
|
} else {
|
||||||
if (!p_OldPassword.equals(user.getPassword()))
|
if (!p_OldPassword.equals(user.getPassword()))
|
||||||
throw new IllegalArgumentException("@OldPasswordNoMatch@");
|
throw new IllegalArgumentException("@OldPasswordNoMatch@");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// new password confirm
|
||||||
|
if (!Util.isEmpty(p_NewPassword)) {
|
||||||
|
if (Util.isEmpty(p_NewPasswordConfirm)) {
|
||||||
|
throw new IllegalArgumentException("@NewPasswordConfirmMandatory@");
|
||||||
|
} else {
|
||||||
|
if (!p_NewPassword.equals(p_NewPasswordConfirm)) {
|
||||||
|
throw new IllegalArgumentException("@PasswordNotMatch@");
|
||||||
|
} else {
|
||||||
|
String msg = validate();
|
||||||
|
if (msg != null) {
|
||||||
|
throw new IllegalArgumentException(msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!Util.isEmpty(p_NewEMailUserPW)) {
|
||||||
|
if (Util.isEmpty(p_NewEMailConfirm)) {
|
||||||
|
throw new IllegalArgumentException("@NewEmailConfirmMandatory@");
|
||||||
|
} else {
|
||||||
|
if (!p_NewEMailUserPW.equals(p_NewEMailConfirm)) {
|
||||||
|
throw new IllegalArgumentException("@NewEmailNotMatch@");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!Util.isEmpty(p_NewPassword))
|
if (!Util.isEmpty(p_NewPassword))
|
||||||
user.setPassword(p_NewPassword);
|
user.setPassword(p_NewPassword);
|
||||||
if (!Util.isEmpty(p_NewEMail))
|
if (!Util.isEmpty(p_NewEMail))
|
||||||
|
@ -112,4 +144,21 @@ public class UserPassword extends SvrProcess
|
||||||
return "OK";
|
return "OK";
|
||||||
} // doIt
|
} // doIt
|
||||||
|
|
||||||
|
|
||||||
|
private String validate()
|
||||||
|
{
|
||||||
|
MClient client=new MClient(getCtx(), getAD_Client_ID(), get_TrxName());
|
||||||
|
int ad_passwordrule_id = client.getAD_PasswordRule_ID();
|
||||||
|
|
||||||
|
String error = null;
|
||||||
|
if (ad_passwordrule_id > 0)
|
||||||
|
{
|
||||||
|
MPasswordRule rule =new MPasswordRule(getCtx(), ad_passwordrule_id, get_TrxName());
|
||||||
|
error = rule.validate(p_NewPassword);
|
||||||
|
}
|
||||||
|
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
|
||||||
} // UserPassword
|
} // UserPassword
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,8 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<classpath>
|
<classpath>
|
||||||
|
<classpathentry exported="true" kind="lib" path="vt-crypt-2.1.4.jar"/>
|
||||||
|
<classpathentry exported="true" kind="lib" path="vt-dictionary-3.0.jar"/>
|
||||||
|
<classpathentry exported="true" kind="lib" path="vt-password-3.1.1.jar"/>
|
||||||
<classpathentry exported="true" kind="lib" path="groovy-all-1.7.5.jar"/>
|
<classpathentry exported="true" kind="lib" path="groovy-all-1.7.5.jar"/>
|
||||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">
|
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6">
|
||||||
<accessrules>
|
<accessrules>
|
||||||
|
|
|
@ -15,7 +15,10 @@ Bundle-ClassPath: base.jar,
|
||||||
jcommon-1.0.16.jar,
|
jcommon-1.0.16.jar,
|
||||||
jfreechart-1.0.13.jar,
|
jfreechart-1.0.13.jar,
|
||||||
jnlp.jar,
|
jnlp.jar,
|
||||||
groovy-all-1.7.5.jar
|
groovy-all-1.7.5.jar,
|
||||||
|
vt-crypt-2.1.4.jar,
|
||||||
|
vt-dictionary-3.0.jar,
|
||||||
|
vt-password-3.1.1.jar
|
||||||
Export-Package: bsh,
|
Export-Package: bsh,
|
||||||
bsh.classpath,
|
bsh.classpath,
|
||||||
bsh.collection,
|
bsh.collection,
|
||||||
|
|
|
@ -13,7 +13,10 @@ bin.includes = META-INF/,\
|
||||||
jfreechart-1.0.13.jar,\
|
jfreechart-1.0.13.jar,\
|
||||||
jnlp.jar,\
|
jnlp.jar,\
|
||||||
OSGI-INF/,\
|
OSGI-INF/,\
|
||||||
groovy-all-1.7.5.jar
|
groovy-all-1.7.5.jar,\
|
||||||
|
vt-crypt-2.1.4.jar,\
|
||||||
|
vt-dictionary-3.0.jar,\
|
||||||
|
vt-password-3.1.1.jar
|
||||||
output.base.jar = build/
|
output.base.jar = build/
|
||||||
source.base.jar = src/
|
source.base.jar = src/
|
||||||
src.includes = schema/
|
src.includes = schema/
|
||||||
|
|
|
@ -1581,6 +1581,13 @@ public abstract class Doc
|
||||||
*/
|
*/
|
||||||
public int getGL_Category_ID()
|
public int getGL_Category_ID()
|
||||||
{
|
{
|
||||||
|
int index = p_po.get_ColumnIndex("GL_Category_ID");
|
||||||
|
if (index != -1)
|
||||||
|
{
|
||||||
|
Integer ii = (Integer)p_po.get_Value(index);
|
||||||
|
if (ii != null)
|
||||||
|
return ii.intValue();
|
||||||
|
}
|
||||||
return m_GL_Category_ID;
|
return m_GL_Category_ID;
|
||||||
} // getGL_Category_ID
|
} // getGL_Category_ID
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ public interface I_AD_Client
|
||||||
public static final String Table_Name = "AD_Client";
|
public static final String Table_Name = "AD_Client";
|
||||||
|
|
||||||
/** AD_Table_ID=112 */
|
/** AD_Table_ID=112 */
|
||||||
public static final int Table_ID = MTable.getTable_ID(Table_Name);
|
public static final int Table_ID = 112;
|
||||||
|
|
||||||
KeyNamePair Model = new KeyNamePair(Table_ID, Table_Name);
|
KeyNamePair Model = new KeyNamePair(Table_ID, Table_Name);
|
||||||
|
|
||||||
|
@ -49,6 +49,15 @@ public interface I_AD_Client
|
||||||
*/
|
*/
|
||||||
public int getAD_Client_ID();
|
public int getAD_Client_ID();
|
||||||
|
|
||||||
|
/** Column name AD_Client_UU */
|
||||||
|
public static final String COLUMNNAME_AD_Client_UU = "AD_Client_UU";
|
||||||
|
|
||||||
|
/** Set AD_Client_UU */
|
||||||
|
public void setAD_Client_UU (String AD_Client_UU);
|
||||||
|
|
||||||
|
/** Get AD_Client_UU */
|
||||||
|
public String getAD_Client_UU();
|
||||||
|
|
||||||
/** Column name AD_Language */
|
/** Column name AD_Language */
|
||||||
public static final String COLUMNNAME_AD_Language = "AD_Language";
|
public static final String COLUMNNAME_AD_Language = "AD_Language";
|
||||||
|
|
||||||
|
@ -75,6 +84,17 @@ public interface I_AD_Client
|
||||||
*/
|
*/
|
||||||
public int getAD_Org_ID();
|
public int getAD_Org_ID();
|
||||||
|
|
||||||
|
/** Column name AD_PasswordRule_ID */
|
||||||
|
public static final String COLUMNNAME_AD_PasswordRule_ID = "AD_PasswordRule_ID";
|
||||||
|
|
||||||
|
/** Set AD_PasswordRule */
|
||||||
|
public void setAD_PasswordRule_ID (int AD_PasswordRule_ID);
|
||||||
|
|
||||||
|
/** Get AD_PasswordRule */
|
||||||
|
public int getAD_PasswordRule_ID();
|
||||||
|
|
||||||
|
public org.compiere.model.I_AD_PasswordRule getAD_PasswordRule() throws RuntimeException;
|
||||||
|
|
||||||
/** Column name AD_ReplicationStrategy_ID */
|
/** Column name AD_ReplicationStrategy_ID */
|
||||||
public static final String COLUMNNAME_AD_ReplicationStrategy_ID = "AD_ReplicationStrategy_ID";
|
public static final String COLUMNNAME_AD_ReplicationStrategy_ID = "AD_ReplicationStrategy_ID";
|
||||||
|
|
||||||
|
@ -88,7 +108,7 @@ public interface I_AD_Client
|
||||||
*/
|
*/
|
||||||
public int getAD_ReplicationStrategy_ID();
|
public int getAD_ReplicationStrategy_ID();
|
||||||
|
|
||||||
public I_AD_ReplicationStrategy getAD_ReplicationStrategy() throws RuntimeException;
|
public org.compiere.model.I_AD_ReplicationStrategy getAD_ReplicationStrategy() throws RuntimeException;
|
||||||
|
|
||||||
/** Column name AutoArchive */
|
/** Column name AutoArchive */
|
||||||
public static final String COLUMNNAME_AutoArchive = "AutoArchive";
|
public static final String COLUMNNAME_AutoArchive = "AutoArchive";
|
||||||
|
@ -171,19 +191,6 @@ public interface I_AD_Client
|
||||||
*/
|
*/
|
||||||
public boolean isActive();
|
public boolean isActive();
|
||||||
|
|
||||||
/** Column name IsCostImmediate */
|
|
||||||
public static final String COLUMNNAME_IsCostImmediate = "IsCostImmediate";
|
|
||||||
|
|
||||||
/** Set Cost Immediately.
|
|
||||||
* Update Costs immediately for testing
|
|
||||||
*/
|
|
||||||
public void setIsCostImmediate (boolean IsCostImmediate);
|
|
||||||
|
|
||||||
/** Get Cost Immediately.
|
|
||||||
* Update Costs immediately for testing
|
|
||||||
*/
|
|
||||||
public boolean isCostImmediate();
|
|
||||||
|
|
||||||
/** Column name IsMultiLingualDocument */
|
/** Column name IsMultiLingualDocument */
|
||||||
public static final String COLUMNNAME_IsMultiLingualDocument = "IsMultiLingualDocument";
|
public static final String COLUMNNAME_IsMultiLingualDocument = "IsMultiLingualDocument";
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,333 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* Product: Adempiere ERP & CRM Smart Business Solution *
|
||||||
|
* Copyright (C) 1999-2007 ComPiere, Inc. All Rights Reserved. *
|
||||||
|
* This program is free software, you can redistribute it and/or modify it *
|
||||||
|
* under the terms version 2 of the GNU General Public License as published *
|
||||||
|
* by the Free Software Foundation. This program is distributed in the hope *
|
||||||
|
* that it will be useful, but WITHOUT ANY WARRANTY, without even the implied *
|
||||||
|
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
|
||||||
|
* See the GNU General Public License for more details. *
|
||||||
|
* You should have received a copy of the GNU General Public License along *
|
||||||
|
* with this program, if not, write to the Free Software Foundation, Inc., *
|
||||||
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
|
||||||
|
* For the text or an alternative of this public license, you may reach us *
|
||||||
|
* ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA *
|
||||||
|
* or via info@compiere.org or http://www.compiere.org/license.html *
|
||||||
|
*****************************************************************************/
|
||||||
|
package org.compiere.model;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
|
import java.sql.Timestamp;
|
||||||
|
import org.compiere.util.KeyNamePair;
|
||||||
|
|
||||||
|
/** Generated Interface for AD_PasswordRule
|
||||||
|
* @author Adempiere (generated)
|
||||||
|
* @version Release 3.6.0LTS
|
||||||
|
*/
|
||||||
|
public interface I_AD_PasswordRule
|
||||||
|
{
|
||||||
|
|
||||||
|
/** TableName=AD_PasswordRule */
|
||||||
|
public static final String Table_Name = "AD_PasswordRule";
|
||||||
|
|
||||||
|
/** AD_Table_ID=200005 */
|
||||||
|
public static final int Table_ID = 200005;
|
||||||
|
|
||||||
|
KeyNamePair Model = new KeyNamePair(Table_ID, Table_Name);
|
||||||
|
|
||||||
|
/** AccessLevel = 4 - System
|
||||||
|
*/
|
||||||
|
BigDecimal accessLevel = BigDecimal.valueOf(4);
|
||||||
|
|
||||||
|
/** Load Meta Data */
|
||||||
|
|
||||||
|
/** Column name AD_Client_ID */
|
||||||
|
public static final String COLUMNNAME_AD_Client_ID = "AD_Client_ID";
|
||||||
|
|
||||||
|
/** Get Client.
|
||||||
|
* Client/Tenant for this installation.
|
||||||
|
*/
|
||||||
|
public int getAD_Client_ID();
|
||||||
|
|
||||||
|
/** Column name AD_Org_ID */
|
||||||
|
public static final String COLUMNNAME_AD_Org_ID = "AD_Org_ID";
|
||||||
|
|
||||||
|
/** Set Organization.
|
||||||
|
* Organizational entity within client
|
||||||
|
*/
|
||||||
|
public void setAD_Org_ID (int AD_Org_ID);
|
||||||
|
|
||||||
|
/** Get Organization.
|
||||||
|
* Organizational entity within client
|
||||||
|
*/
|
||||||
|
public int getAD_Org_ID();
|
||||||
|
|
||||||
|
/** Column name AD_PasswordRule_ID */
|
||||||
|
public static final String COLUMNNAME_AD_PasswordRule_ID = "AD_PasswordRule_ID";
|
||||||
|
|
||||||
|
/** Set AD_PasswordRule */
|
||||||
|
public void setAD_PasswordRule_ID (int AD_PasswordRule_ID);
|
||||||
|
|
||||||
|
/** Get AD_PasswordRule */
|
||||||
|
public int getAD_PasswordRule_ID();
|
||||||
|
|
||||||
|
/** Column name AD_PasswordRule_UU */
|
||||||
|
public static final String COLUMNNAME_AD_PasswordRule_UU = "AD_PasswordRule_UU";
|
||||||
|
|
||||||
|
/** Set AD_PasswordRule_UU */
|
||||||
|
public void setAD_PasswordRule_UU (String AD_PasswordRule_UU);
|
||||||
|
|
||||||
|
/** Get AD_PasswordRule_UU */
|
||||||
|
public String getAD_PasswordRule_UU();
|
||||||
|
|
||||||
|
/** Column name AlphabeticalCharacter */
|
||||||
|
public static final String COLUMNNAME_AlphabeticalCharacter = "AlphabeticalCharacter";
|
||||||
|
|
||||||
|
/** Set Alphabetical Character */
|
||||||
|
public void setAlphabeticalCharacter (int AlphabeticalCharacter);
|
||||||
|
|
||||||
|
/** Get Alphabetical Character */
|
||||||
|
public int getAlphabeticalCharacter();
|
||||||
|
|
||||||
|
/** Column name AlphabeticalSequence */
|
||||||
|
public static final String COLUMNNAME_AlphabeticalSequence = "AlphabeticalSequence";
|
||||||
|
|
||||||
|
/** Set Alphabetical Sequence.
|
||||||
|
* Allow alphabetical sequences
|
||||||
|
*/
|
||||||
|
public void setAlphabeticalSequence (boolean AlphabeticalSequence);
|
||||||
|
|
||||||
|
/** Get Alphabetical Sequence.
|
||||||
|
* Allow alphabetical sequences
|
||||||
|
*/
|
||||||
|
public boolean isAlphabeticalSequence();
|
||||||
|
|
||||||
|
/** Column name Created */
|
||||||
|
public static final String COLUMNNAME_Created = "Created";
|
||||||
|
|
||||||
|
/** Get Created.
|
||||||
|
* Date this record was created
|
||||||
|
*/
|
||||||
|
public Timestamp getCreated();
|
||||||
|
|
||||||
|
/** Column name CreatedBy */
|
||||||
|
public static final String COLUMNNAME_CreatedBy = "CreatedBy";
|
||||||
|
|
||||||
|
/** Get Created By.
|
||||||
|
* User who created this records
|
||||||
|
*/
|
||||||
|
public int getCreatedBy();
|
||||||
|
|
||||||
|
/** Column name DictMatchBackwards */
|
||||||
|
public static final String COLUMNNAME_DictMatchBackwards = "DictMatchBackwards";
|
||||||
|
|
||||||
|
/** Set Match Backwards of Dictionary.
|
||||||
|
* Match dictionary words backwards
|
||||||
|
*/
|
||||||
|
public void setDictMatchBackwards (boolean DictMatchBackwards);
|
||||||
|
|
||||||
|
/** Get Match Backwards of Dictionary.
|
||||||
|
* Match dictionary words backwards
|
||||||
|
*/
|
||||||
|
public boolean isDictMatchBackwards();
|
||||||
|
|
||||||
|
/** Column name DictWordLength */
|
||||||
|
public static final String COLUMNNAME_DictWordLength = "DictWordLength";
|
||||||
|
|
||||||
|
/** Set Word Length Dictionary */
|
||||||
|
public void setDictWordLength (int DictWordLength);
|
||||||
|
|
||||||
|
/** Get Word Length Dictionary */
|
||||||
|
public int getDictWordLength();
|
||||||
|
|
||||||
|
/** Column name DigitCharacter */
|
||||||
|
public static final String COLUMNNAME_DigitCharacter = "DigitCharacter";
|
||||||
|
|
||||||
|
/** Set Digit Character.
|
||||||
|
* Require at least # digit in passwords
|
||||||
|
*/
|
||||||
|
public void setDigitCharacter (int DigitCharacter);
|
||||||
|
|
||||||
|
/** Get Digit Character.
|
||||||
|
* Require at least # digit in passwords
|
||||||
|
*/
|
||||||
|
public int getDigitCharacter();
|
||||||
|
|
||||||
|
/** Column name IsActive */
|
||||||
|
public static final String COLUMNNAME_IsActive = "IsActive";
|
||||||
|
|
||||||
|
/** Set Active.
|
||||||
|
* The record is active in the system
|
||||||
|
*/
|
||||||
|
public void setIsActive (boolean IsActive);
|
||||||
|
|
||||||
|
/** Get Active.
|
||||||
|
* The record is active in the system
|
||||||
|
*/
|
||||||
|
public boolean isActive();
|
||||||
|
|
||||||
|
/** Column name LowercaseCharacter */
|
||||||
|
public static final String COLUMNNAME_LowercaseCharacter = "LowercaseCharacter";
|
||||||
|
|
||||||
|
/** Set Lowercase Character.
|
||||||
|
* Require at least # lower case char
|
||||||
|
*/
|
||||||
|
public void setLowercaseCharacter (int LowercaseCharacter);
|
||||||
|
|
||||||
|
/** Get Lowercase Character.
|
||||||
|
* Require at least # lower case char
|
||||||
|
*/
|
||||||
|
public int getLowercaseCharacter();
|
||||||
|
|
||||||
|
/** Column name MaxLength */
|
||||||
|
public static final String COLUMNNAME_MaxLength = "MaxLength";
|
||||||
|
|
||||||
|
/** Set Maximum Length.
|
||||||
|
* Maximum Length of Data
|
||||||
|
*/
|
||||||
|
public void setMaxLength (int MaxLength);
|
||||||
|
|
||||||
|
/** Get Maximum Length.
|
||||||
|
* Maximum Length of Data
|
||||||
|
*/
|
||||||
|
public int getMaxLength();
|
||||||
|
|
||||||
|
/** Column name MinLength */
|
||||||
|
public static final String COLUMNNAME_MinLength = "MinLength";
|
||||||
|
|
||||||
|
/** Set Min Length */
|
||||||
|
public void setMinLength (int MinLength);
|
||||||
|
|
||||||
|
/** Get Min Length */
|
||||||
|
public int getMinLength();
|
||||||
|
|
||||||
|
/** Column name Name */
|
||||||
|
public static final String COLUMNNAME_Name = "Name";
|
||||||
|
|
||||||
|
/** Set Name.
|
||||||
|
* Alphanumeric identifier of the entity
|
||||||
|
*/
|
||||||
|
public void setName (String Name);
|
||||||
|
|
||||||
|
/** Get Name.
|
||||||
|
* Alphanumeric identifier of the entity
|
||||||
|
*/
|
||||||
|
public String getName();
|
||||||
|
|
||||||
|
/** Column name NonAlphaNumericCharacter */
|
||||||
|
public static final String COLUMNNAME_NonAlphaNumericCharacter = "NonAlphaNumericCharacter";
|
||||||
|
|
||||||
|
/** Set Non Alpha Numeric Character.
|
||||||
|
* Require at least # non-alphanumeric char
|
||||||
|
*/
|
||||||
|
public void setNonAlphaNumericCharacter (int NonAlphaNumericCharacter);
|
||||||
|
|
||||||
|
/** Get Non Alpha Numeric Character.
|
||||||
|
* Require at least # non-alphanumeric char
|
||||||
|
*/
|
||||||
|
public int getNonAlphaNumericCharacter();
|
||||||
|
|
||||||
|
/** Column name NumericalSequence */
|
||||||
|
public static final String COLUMNNAME_NumericalSequence = "NumericalSequence";
|
||||||
|
|
||||||
|
/** Set Numerical Sequence.
|
||||||
|
* Allow numerical sequences of length #
|
||||||
|
*/
|
||||||
|
public void setNumericalSequence (int NumericalSequence);
|
||||||
|
|
||||||
|
/** Get Numerical Sequence.
|
||||||
|
* Allow numerical sequences of length #
|
||||||
|
*/
|
||||||
|
public int getNumericalSequence();
|
||||||
|
|
||||||
|
/** Column name PathDictionary */
|
||||||
|
public static final String COLUMNNAME_PathDictionary = "PathDictionary";
|
||||||
|
|
||||||
|
/** Set Path Dictionary */
|
||||||
|
public void setPathDictionary (String PathDictionary);
|
||||||
|
|
||||||
|
/** Get Path Dictionary */
|
||||||
|
public String getPathDictionary();
|
||||||
|
|
||||||
|
/** Column name QWERTYSequence */
|
||||||
|
public static final String COLUMNNAME_QWERTYSequence = "QWERTYSequence";
|
||||||
|
|
||||||
|
/** Set QWERTY Sequence.
|
||||||
|
* Allow QWERTY sequences
|
||||||
|
*/
|
||||||
|
public void setQWERTYSequence (boolean QWERTYSequence);
|
||||||
|
|
||||||
|
/** Get QWERTY Sequence.
|
||||||
|
* Allow QWERTY sequences
|
||||||
|
*/
|
||||||
|
public boolean isQWERTYSequence();
|
||||||
|
|
||||||
|
/** Column name RepeatCharacterRegex */
|
||||||
|
public static final String COLUMNNAME_RepeatCharacterRegex = "RepeatCharacterRegex";
|
||||||
|
|
||||||
|
/** Set Repeat Character Regex */
|
||||||
|
public void setRepeatCharacterRegex (int RepeatCharacterRegex);
|
||||||
|
|
||||||
|
/** Get Repeat Character Regex */
|
||||||
|
public int getRepeatCharacterRegex();
|
||||||
|
|
||||||
|
/** Column name Updated */
|
||||||
|
public static final String COLUMNNAME_Updated = "Updated";
|
||||||
|
|
||||||
|
/** Get Updated.
|
||||||
|
* Date this record was updated
|
||||||
|
*/
|
||||||
|
public Timestamp getUpdated();
|
||||||
|
|
||||||
|
/** Column name UpdatedBy */
|
||||||
|
public static final String COLUMNNAME_UpdatedBy = "UpdatedBy";
|
||||||
|
|
||||||
|
/** Get Updated By.
|
||||||
|
* User who updated this records
|
||||||
|
*/
|
||||||
|
public int getUpdatedBy();
|
||||||
|
|
||||||
|
/** Column name UppercaseCharacter */
|
||||||
|
public static final String COLUMNNAME_UppercaseCharacter = "UppercaseCharacter";
|
||||||
|
|
||||||
|
/** Set Uppercase Character.
|
||||||
|
* Require at least # upper case char
|
||||||
|
*/
|
||||||
|
public void setUppercaseCharacter (int UppercaseCharacter);
|
||||||
|
|
||||||
|
/** Get Uppercase Character.
|
||||||
|
* Require at least # upper case char
|
||||||
|
*/
|
||||||
|
public int getUppercaseCharacter();
|
||||||
|
|
||||||
|
/** Column name UserName */
|
||||||
|
public static final String COLUMNNAME_UserName = "UserName";
|
||||||
|
|
||||||
|
/** Set Registered EMail.
|
||||||
|
* Email of the responsible for the System
|
||||||
|
*/
|
||||||
|
public void setUserName (boolean UserName);
|
||||||
|
|
||||||
|
/** Get Registered EMail.
|
||||||
|
* Email of the responsible for the System
|
||||||
|
*/
|
||||||
|
public boolean isUserName();
|
||||||
|
|
||||||
|
/** Column name UsingDictionary */
|
||||||
|
public static final String COLUMNNAME_UsingDictionary = "UsingDictionary";
|
||||||
|
|
||||||
|
/** Set Using Dictionary */
|
||||||
|
public void setUsingDictionary (boolean UsingDictionary);
|
||||||
|
|
||||||
|
/** Get Using Dictionary */
|
||||||
|
public boolean isUsingDictionary();
|
||||||
|
|
||||||
|
/** Column name whitespace */
|
||||||
|
public static final String COLUMNNAME_whitespace = "whitespace";
|
||||||
|
|
||||||
|
/** Set whitespace */
|
||||||
|
public void setwhitespace (boolean whitespace);
|
||||||
|
|
||||||
|
/** Get whitespace */
|
||||||
|
public boolean iswhitespace();
|
||||||
|
}
|
|
@ -136,7 +136,6 @@ public class MClient extends X_AD_Client
|
||||||
setAutoArchive(AUTOARCHIVE_None);
|
setAutoArchive(AUTOARCHIVE_None);
|
||||||
setMMPolicy (MMPOLICY_FiFo); // F
|
setMMPolicy (MMPOLICY_FiFo); // F
|
||||||
setIsPostImmediate(false);
|
setIsPostImmediate(false);
|
||||||
setIsCostImmediate(false);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
load(get_TrxName());
|
load(get_TrxName());
|
||||||
|
|
|
@ -0,0 +1,186 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* Product: iDempiere ERP & CRM Smart Business Solution *
|
||||||
|
* Copyright (C) Trek Global All Rights Reserved. *
|
||||||
|
* This program is free software; you can redistribute it and/or modify it *
|
||||||
|
* under the terms version 2 of the GNU General Public License as published *
|
||||||
|
* by the Free Software Foundation. This program is distributed in the hope *
|
||||||
|
* that it will be useful, but WITHOUT ANY WARRANTY; without even the implied *
|
||||||
|
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
|
||||||
|
* See the GNU General Public License for more details. *
|
||||||
|
* You should have received a copy of the GNU General Public License along *
|
||||||
|
* with this program; if not, write to the Free Software Foundation, Inc., *
|
||||||
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
|
||||||
|
* *
|
||||||
|
* @author Juliana Corredor, jcorredor@trekglobal.com *
|
||||||
|
* IDEMPIERE-221 Password reset validation *
|
||||||
|
* http://jira.idempiere.com/browse/IDEMPIERE-221 *
|
||||||
|
* *
|
||||||
|
*****************************************************************************/
|
||||||
|
package org.compiere.model;
|
||||||
|
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
import edu.vt.middleware.dictionary.ArrayWordList;
|
||||||
|
import edu.vt.middleware.dictionary.WordListDictionary;
|
||||||
|
import edu.vt.middleware.dictionary.WordLists;
|
||||||
|
import edu.vt.middleware.dictionary.sort.ArraysSort;
|
||||||
|
import edu.vt.middleware.password.AlphabeticalSequenceRule;
|
||||||
|
import edu.vt.middleware.password.CharacterCharacteristicsRule;
|
||||||
|
import edu.vt.middleware.password.DictionarySubstringRule;
|
||||||
|
import edu.vt.middleware.password.DigitCharacterRule;
|
||||||
|
import edu.vt.middleware.password.LengthRule;
|
||||||
|
import edu.vt.middleware.password.LowercaseCharacterRule;
|
||||||
|
import edu.vt.middleware.password.NonAlphanumericCharacterRule;
|
||||||
|
import edu.vt.middleware.password.NumericalSequenceRule;
|
||||||
|
import edu.vt.middleware.password.Password;
|
||||||
|
import edu.vt.middleware.password.PasswordData;
|
||||||
|
import edu.vt.middleware.password.PasswordValidator;
|
||||||
|
import edu.vt.middleware.password.QwertySequenceRule;
|
||||||
|
import edu.vt.middleware.password.RepeatCharacterRegexRule;
|
||||||
|
import edu.vt.middleware.password.Rule;
|
||||||
|
import edu.vt.middleware.password.RuleResult;
|
||||||
|
import edu.vt.middleware.password.UppercaseCharacterRule;
|
||||||
|
import edu.vt.middleware.password.WhitespaceRule;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author juliana
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class MPasswordRule extends X_AD_PasswordRule {
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = 6369065572886752718L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param ctx
|
||||||
|
* @param AD_PasswordRule_ID
|
||||||
|
* @param trxName
|
||||||
|
*/
|
||||||
|
public MPasswordRule(Properties ctx, int AD_PasswordRule_ID, String trxName) {
|
||||||
|
super(ctx, AD_PasswordRule_ID, trxName);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param ctx
|
||||||
|
* @param rs
|
||||||
|
* @param trxName
|
||||||
|
*/
|
||||||
|
public MPasswordRule(Properties ctx, ResultSet rs, String trxName) {
|
||||||
|
super(ctx, rs, trxName);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String validate(String newPassword) {
|
||||||
|
WhitespaceRule whitespaceRule;
|
||||||
|
AlphabeticalSequenceRule alphaSeqRule;
|
||||||
|
NumericalSequenceRule numSeqRule;
|
||||||
|
QwertySequenceRule qwertySeqRule;
|
||||||
|
RepeatCharacterRegexRule repeatRule;
|
||||||
|
|
||||||
|
ArrayList<Rule> ruleList = new ArrayList<Rule>();
|
||||||
|
|
||||||
|
if (getMinLength()>0 || getMaxLength()>0) {
|
||||||
|
LengthRule lengthRule = new LengthRule();
|
||||||
|
if (getMinLength()>0)
|
||||||
|
lengthRule.setMinimumLength(getMinLength());
|
||||||
|
if (getMaxLength()>0)
|
||||||
|
lengthRule.setMaximumLength(getMaxLength());
|
||||||
|
ruleList.add(lengthRule);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (iswhitespace()) {
|
||||||
|
whitespaceRule = new WhitespaceRule();
|
||||||
|
ruleList.add(whitespaceRule);
|
||||||
|
}
|
||||||
|
// control allowed characters
|
||||||
|
CharacterCharacteristicsRule charRule = new CharacterCharacteristicsRule();
|
||||||
|
|
||||||
|
if (getDigitCharacter()>0) {
|
||||||
|
// require at least 1 digit in passwords
|
||||||
|
charRule.getRules().add(new DigitCharacterRule(getDigitCharacter()));
|
||||||
|
}
|
||||||
|
if (getNonAlphaNumericCharacter()>0) {
|
||||||
|
// require at least 1 non-alphanumeric char
|
||||||
|
charRule.getRules().add(new NonAlphanumericCharacterRule(getNonAlphaNumericCharacter()));
|
||||||
|
}
|
||||||
|
if (getUppercaseCharacter()>0) {
|
||||||
|
charRule.getRules().add(new UppercaseCharacterRule(getUppercaseCharacter()));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getLowercaseCharacter()>0) {
|
||||||
|
charRule.getRules().add(new LowercaseCharacterRule(getLowercaseCharacter()));
|
||||||
|
}
|
||||||
|
ruleList.add(charRule);
|
||||||
|
|
||||||
|
if (isAlphabeticalSequence()) {
|
||||||
|
alphaSeqRule=new AlphabeticalSequenceRule();
|
||||||
|
ruleList.add(alphaSeqRule);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getNumericalSequence()>0) {
|
||||||
|
numSeqRule = new NumericalSequenceRule(getNumericalSequence(),true);
|
||||||
|
ruleList.add(numSeqRule);
|
||||||
|
}
|
||||||
|
if (isQWERTYSequence()) {
|
||||||
|
qwertySeqRule = new QwertySequenceRule();
|
||||||
|
ruleList.add(qwertySeqRule);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (getRepeatCharacterRegex()>0) {
|
||||||
|
repeatRule = new RepeatCharacterRegexRule(getRepeatCharacterRegex());
|
||||||
|
ruleList.add(repeatRule);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isUsingDictionary()) {
|
||||||
|
if (getPathDictionary().length()>0) {
|
||||||
|
try {
|
||||||
|
ArrayWordList awl = WordLists.createFromReader(
|
||||||
|
new FileReader[] {new FileReader(getPathDictionary())},
|
||||||
|
true,
|
||||||
|
new ArraysSort());
|
||||||
|
|
||||||
|
WordListDictionary dict = new WordListDictionary(awl);
|
||||||
|
DictionarySubstringRule dictRule = new DictionarySubstringRule(dict);
|
||||||
|
|
||||||
|
if (getDictWordLength()>0) {
|
||||||
|
dictRule.setWordLength(getDictWordLength()); // size of words to check in the password
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
dictRule.setWordLength(DictionarySubstringRule.DEFAULT_WORD_LENGTH);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isDictMatchBackwards()) {
|
||||||
|
dictRule.setMatchBackwards(true); // match dictionary words backwards
|
||||||
|
}
|
||||||
|
ruleList.add(dictRule);
|
||||||
|
|
||||||
|
} catch (FileNotFoundException e) {
|
||||||
|
return "Could not find dictionary file: " + e.getMessage();
|
||||||
|
} catch (IOException e) {
|
||||||
|
return "Could not read dictionary file: " + e.getMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ruleList.isEmpty()) {
|
||||||
|
PasswordValidator validator = new PasswordValidator(ruleList);
|
||||||
|
PasswordData passwordData = new PasswordData(new Password(newPassword));
|
||||||
|
RuleResult result = validator.validate(passwordData);
|
||||||
|
if (!result.isValid()) {
|
||||||
|
String error = null;
|
||||||
|
for (String msg : validator.getMessages(result)) {
|
||||||
|
error = (error == null ? "" : error) + " " + msg;
|
||||||
|
}
|
||||||
|
return error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -480,7 +480,7 @@ public class MSystem extends X_AD_System
|
||||||
|
|
||||||
public static boolean isZKRememberPasswordAllowed() {
|
public static boolean isZKRememberPasswordAllowed() {
|
||||||
String ca = MSysConfig.getValue("ZK_LOGIN_ALLOW_REMEMBER_ME", SYSTEM_ALLOW_REMEMBER_USER);
|
String ca = MSysConfig.getValue("ZK_LOGIN_ALLOW_REMEMBER_ME", SYSTEM_ALLOW_REMEMBER_USER);
|
||||||
return (ca.equalsIgnoreCase(SYSTEM_ALLOW_REMEMBER_PASSWORD));
|
return (ca.equalsIgnoreCase(SYSTEM_ALLOW_REMEMBER_PASSWORD) && !MSysConfig.getBooleanValue("USER_PASSWORD_HASH", false));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isSwingRememberUserAllowed() {
|
public static boolean isSwingRememberUserAllowed() {
|
||||||
|
@ -490,7 +490,7 @@ public class MSystem extends X_AD_System
|
||||||
|
|
||||||
public static boolean isSwingRememberPasswordAllowed() {
|
public static boolean isSwingRememberPasswordAllowed() {
|
||||||
String ca = MSysConfig.getValue("SWING_LOGIN_ALLOW_REMEMBER_ME", SYSTEM_ALLOW_REMEMBER_PASSWORD);
|
String ca = MSysConfig.getValue("SWING_LOGIN_ALLOW_REMEMBER_ME", SYSTEM_ALLOW_REMEMBER_PASSWORD);
|
||||||
return (ca.equalsIgnoreCase(SYSTEM_ALLOW_REMEMBER_PASSWORD));
|
return (ca.equalsIgnoreCase(SYSTEM_ALLOW_REMEMBER_PASSWORD) && !MSysConfig.getBooleanValue("USER_PASSWORD_HASH", false));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -30,7 +30,7 @@ public class X_AD_Client extends PO implements I_AD_Client, I_Persistent
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
private static final long serialVersionUID = 20100614L;
|
private static final long serialVersionUID = 20120802L;
|
||||||
|
|
||||||
/** Standard Constructor */
|
/** Standard Constructor */
|
||||||
public X_AD_Client (Properties ctx, int AD_Client_ID, String trxName)
|
public X_AD_Client (Properties ctx, int AD_Client_ID, String trxName)
|
||||||
|
@ -39,8 +39,6 @@ public class X_AD_Client extends PO implements I_AD_Client, I_Persistent
|
||||||
/** if (AD_Client_ID == 0)
|
/** if (AD_Client_ID == 0)
|
||||||
{
|
{
|
||||||
setAutoArchive (null);
|
setAutoArchive (null);
|
||||||
// N
|
|
||||||
setIsCostImmediate (false);
|
|
||||||
// N
|
// N
|
||||||
setIsMultiLingualDocument (false);
|
setIsMultiLingualDocument (false);
|
||||||
setIsPostImmediate (false);
|
setIsPostImmediate (false);
|
||||||
|
@ -89,6 +87,20 @@ public class X_AD_Client extends PO implements I_AD_Client, I_Persistent
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Set AD_Client_UU.
|
||||||
|
@param AD_Client_UU AD_Client_UU */
|
||||||
|
public void setAD_Client_UU (String AD_Client_UU)
|
||||||
|
{
|
||||||
|
set_Value (COLUMNNAME_AD_Client_UU, AD_Client_UU);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get AD_Client_UU.
|
||||||
|
@return AD_Client_UU */
|
||||||
|
public String getAD_Client_UU ()
|
||||||
|
{
|
||||||
|
return (String)get_Value(COLUMNNAME_AD_Client_UU);
|
||||||
|
}
|
||||||
|
|
||||||
/** AD_Language AD_Reference_ID=327 */
|
/** AD_Language AD_Reference_ID=327 */
|
||||||
public static final int AD_LANGUAGE_AD_Reference_ID=327;
|
public static final int AD_LANGUAGE_AD_Reference_ID=327;
|
||||||
/** Set Language.
|
/** Set Language.
|
||||||
|
@ -109,9 +121,34 @@ public class X_AD_Client extends PO implements I_AD_Client, I_Persistent
|
||||||
return (String)get_Value(COLUMNNAME_AD_Language);
|
return (String)get_Value(COLUMNNAME_AD_Language);
|
||||||
}
|
}
|
||||||
|
|
||||||
public I_AD_ReplicationStrategy getAD_ReplicationStrategy() throws RuntimeException
|
public org.compiere.model.I_AD_PasswordRule getAD_PasswordRule() throws RuntimeException
|
||||||
{
|
{
|
||||||
return (I_AD_ReplicationStrategy)MTable.get(getCtx(), I_AD_ReplicationStrategy.Table_Name)
|
return (org.compiere.model.I_AD_PasswordRule)MTable.get(getCtx(), org.compiere.model.I_AD_PasswordRule.Table_Name)
|
||||||
|
.getPO(getAD_PasswordRule_ID(), get_TrxName()); }
|
||||||
|
|
||||||
|
/** Set AD_PasswordRule.
|
||||||
|
@param AD_PasswordRule_ID AD_PasswordRule */
|
||||||
|
public void setAD_PasswordRule_ID (int AD_PasswordRule_ID)
|
||||||
|
{
|
||||||
|
if (AD_PasswordRule_ID < 1)
|
||||||
|
set_Value (COLUMNNAME_AD_PasswordRule_ID, null);
|
||||||
|
else
|
||||||
|
set_Value (COLUMNNAME_AD_PasswordRule_ID, Integer.valueOf(AD_PasswordRule_ID));
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get AD_PasswordRule.
|
||||||
|
@return AD_PasswordRule */
|
||||||
|
public int getAD_PasswordRule_ID ()
|
||||||
|
{
|
||||||
|
Integer ii = (Integer)get_Value(COLUMNNAME_AD_PasswordRule_ID);
|
||||||
|
if (ii == null)
|
||||||
|
return 0;
|
||||||
|
return ii.intValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
public org.compiere.model.I_AD_ReplicationStrategy getAD_ReplicationStrategy() throws RuntimeException
|
||||||
|
{
|
||||||
|
return (org.compiere.model.I_AD_ReplicationStrategy)MTable.get(getCtx(), org.compiere.model.I_AD_ReplicationStrategy.Table_Name)
|
||||||
.getPO(getAD_ReplicationStrategy_ID(), get_TrxName()); }
|
.getPO(getAD_ReplicationStrategy_ID(), get_TrxName()); }
|
||||||
|
|
||||||
/** Set Replication Strategy.
|
/** Set Replication Strategy.
|
||||||
|
@ -216,30 +253,6 @@ public class X_AD_Client extends PO implements I_AD_Client, I_Persistent
|
||||||
return (String)get_Value(COLUMNNAME_EMailTest);
|
return (String)get_Value(COLUMNNAME_EMailTest);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Set Cost Immediately.
|
|
||||||
@param IsCostImmediate
|
|
||||||
Update Costs immediately for testing
|
|
||||||
*/
|
|
||||||
public void setIsCostImmediate (boolean IsCostImmediate)
|
|
||||||
{
|
|
||||||
set_Value (COLUMNNAME_IsCostImmediate, Boolean.valueOf(IsCostImmediate));
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Get Cost Immediately.
|
|
||||||
@return Update Costs immediately for testing
|
|
||||||
*/
|
|
||||||
public boolean isCostImmediate ()
|
|
||||||
{
|
|
||||||
Object oo = get_Value(COLUMNNAME_IsCostImmediate);
|
|
||||||
if (oo != null)
|
|
||||||
{
|
|
||||||
if (oo instanceof Boolean)
|
|
||||||
return ((Boolean)oo).booleanValue();
|
|
||||||
return "Y".equals(oo);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Set Multi Lingual Documents.
|
/** Set Multi Lingual Documents.
|
||||||
@param IsMultiLingualDocument
|
@param IsMultiLingualDocument
|
||||||
Documents are Multi Lingual
|
Documents are Multi Lingual
|
||||||
|
|
|
@ -0,0 +1,471 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* Product: Adempiere ERP & CRM Smart Business Solution *
|
||||||
|
* Copyright (C) 1999-2007 ComPiere, Inc. All Rights Reserved. *
|
||||||
|
* This program is free software, you can redistribute it and/or modify it *
|
||||||
|
* under the terms version 2 of the GNU General Public License as published *
|
||||||
|
* by the Free Software Foundation. This program is distributed in the hope *
|
||||||
|
* that it will be useful, but WITHOUT ANY WARRANTY, without even the implied *
|
||||||
|
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *
|
||||||
|
* See the GNU General Public License for more details. *
|
||||||
|
* You should have received a copy of the GNU General Public License along *
|
||||||
|
* with this program, if not, write to the Free Software Foundation, Inc., *
|
||||||
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
|
||||||
|
* For the text or an alternative of this public license, you may reach us *
|
||||||
|
* ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA *
|
||||||
|
* or via info@compiere.org or http://www.compiere.org/license.html *
|
||||||
|
*****************************************************************************/
|
||||||
|
/** Generated Model - DO NOT CHANGE */
|
||||||
|
package org.compiere.model;
|
||||||
|
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.util.Properties;
|
||||||
|
import org.compiere.util.KeyNamePair;
|
||||||
|
|
||||||
|
/** Generated Model for AD_PasswordRule
|
||||||
|
* @author Adempiere (generated)
|
||||||
|
* @version Release 3.6.0LTS - $Id$ */
|
||||||
|
public class X_AD_PasswordRule extends PO implements I_AD_PasswordRule, I_Persistent
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = 20120802L;
|
||||||
|
|
||||||
|
/** Standard Constructor */
|
||||||
|
public X_AD_PasswordRule (Properties ctx, int AD_PasswordRule_ID, String trxName)
|
||||||
|
{
|
||||||
|
super (ctx, AD_PasswordRule_ID, trxName);
|
||||||
|
/** if (AD_PasswordRule_ID == 0)
|
||||||
|
{
|
||||||
|
setAD_PasswordRule_ID (0);
|
||||||
|
} */
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Load Constructor */
|
||||||
|
public X_AD_PasswordRule (Properties ctx, ResultSet rs, String trxName)
|
||||||
|
{
|
||||||
|
super (ctx, rs, trxName);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** AccessLevel
|
||||||
|
* @return 4 - System
|
||||||
|
*/
|
||||||
|
protected int get_AccessLevel()
|
||||||
|
{
|
||||||
|
return accessLevel.intValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Load Meta Data */
|
||||||
|
protected POInfo initPO (Properties ctx)
|
||||||
|
{
|
||||||
|
POInfo poi = POInfo.getPOInfo (ctx, Table_ID, get_TrxName());
|
||||||
|
return poi;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String toString()
|
||||||
|
{
|
||||||
|
StringBuffer sb = new StringBuffer ("X_AD_PasswordRule[")
|
||||||
|
.append(get_ID()).append("]");
|
||||||
|
return sb.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Set AD_PasswordRule.
|
||||||
|
@param AD_PasswordRule_ID AD_PasswordRule */
|
||||||
|
public void setAD_PasswordRule_ID (int AD_PasswordRule_ID)
|
||||||
|
{
|
||||||
|
if (AD_PasswordRule_ID < 1)
|
||||||
|
set_ValueNoCheck (COLUMNNAME_AD_PasswordRule_ID, null);
|
||||||
|
else
|
||||||
|
set_ValueNoCheck (COLUMNNAME_AD_PasswordRule_ID, Integer.valueOf(AD_PasswordRule_ID));
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get AD_PasswordRule.
|
||||||
|
@return AD_PasswordRule */
|
||||||
|
public int getAD_PasswordRule_ID ()
|
||||||
|
{
|
||||||
|
Integer ii = (Integer)get_Value(COLUMNNAME_AD_PasswordRule_ID);
|
||||||
|
if (ii == null)
|
||||||
|
return 0;
|
||||||
|
return ii.intValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Set AD_PasswordRule_UU.
|
||||||
|
@param AD_PasswordRule_UU AD_PasswordRule_UU */
|
||||||
|
public void setAD_PasswordRule_UU (String AD_PasswordRule_UU)
|
||||||
|
{
|
||||||
|
set_Value (COLUMNNAME_AD_PasswordRule_UU, AD_PasswordRule_UU);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get AD_PasswordRule_UU.
|
||||||
|
@return AD_PasswordRule_UU */
|
||||||
|
public String getAD_PasswordRule_UU ()
|
||||||
|
{
|
||||||
|
return (String)get_Value(COLUMNNAME_AD_PasswordRule_UU);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Set Alphabetical Character.
|
||||||
|
@param AlphabeticalCharacter Alphabetical Character */
|
||||||
|
public void setAlphabeticalCharacter (int AlphabeticalCharacter)
|
||||||
|
{
|
||||||
|
set_Value (COLUMNNAME_AlphabeticalCharacter, Integer.valueOf(AlphabeticalCharacter));
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get Alphabetical Character.
|
||||||
|
@return Alphabetical Character */
|
||||||
|
public int getAlphabeticalCharacter ()
|
||||||
|
{
|
||||||
|
Integer ii = (Integer)get_Value(COLUMNNAME_AlphabeticalCharacter);
|
||||||
|
if (ii == null)
|
||||||
|
return 0;
|
||||||
|
return ii.intValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Set Alphabetical Sequence.
|
||||||
|
@param AlphabeticalSequence
|
||||||
|
Allow alphabetical sequences
|
||||||
|
*/
|
||||||
|
public void setAlphabeticalSequence (boolean AlphabeticalSequence)
|
||||||
|
{
|
||||||
|
set_Value (COLUMNNAME_AlphabeticalSequence, Boolean.valueOf(AlphabeticalSequence));
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get Alphabetical Sequence.
|
||||||
|
@return Allow alphabetical sequences
|
||||||
|
*/
|
||||||
|
public boolean isAlphabeticalSequence ()
|
||||||
|
{
|
||||||
|
Object oo = get_Value(COLUMNNAME_AlphabeticalSequence);
|
||||||
|
if (oo != null)
|
||||||
|
{
|
||||||
|
if (oo instanceof Boolean)
|
||||||
|
return ((Boolean)oo).booleanValue();
|
||||||
|
return "Y".equals(oo);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Set Match Backwards of Dictionary.
|
||||||
|
@param DictMatchBackwards
|
||||||
|
Match dictionary words backwards
|
||||||
|
*/
|
||||||
|
public void setDictMatchBackwards (boolean DictMatchBackwards)
|
||||||
|
{
|
||||||
|
set_Value (COLUMNNAME_DictMatchBackwards, Boolean.valueOf(DictMatchBackwards));
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get Match Backwards of Dictionary.
|
||||||
|
@return Match dictionary words backwards
|
||||||
|
*/
|
||||||
|
public boolean isDictMatchBackwards ()
|
||||||
|
{
|
||||||
|
Object oo = get_Value(COLUMNNAME_DictMatchBackwards);
|
||||||
|
if (oo != null)
|
||||||
|
{
|
||||||
|
if (oo instanceof Boolean)
|
||||||
|
return ((Boolean)oo).booleanValue();
|
||||||
|
return "Y".equals(oo);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Set Word Length Dictionary.
|
||||||
|
@param DictWordLength Word Length Dictionary */
|
||||||
|
public void setDictWordLength (int DictWordLength)
|
||||||
|
{
|
||||||
|
set_Value (COLUMNNAME_DictWordLength, Integer.valueOf(DictWordLength));
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get Word Length Dictionary.
|
||||||
|
@return Word Length Dictionary */
|
||||||
|
public int getDictWordLength ()
|
||||||
|
{
|
||||||
|
Integer ii = (Integer)get_Value(COLUMNNAME_DictWordLength);
|
||||||
|
if (ii == null)
|
||||||
|
return 0;
|
||||||
|
return ii.intValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Set Digit Character.
|
||||||
|
@param DigitCharacter
|
||||||
|
Require at least # digit in passwords
|
||||||
|
*/
|
||||||
|
public void setDigitCharacter (int DigitCharacter)
|
||||||
|
{
|
||||||
|
set_Value (COLUMNNAME_DigitCharacter, Integer.valueOf(DigitCharacter));
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get Digit Character.
|
||||||
|
@return Require at least # digit in passwords
|
||||||
|
*/
|
||||||
|
public int getDigitCharacter ()
|
||||||
|
{
|
||||||
|
Integer ii = (Integer)get_Value(COLUMNNAME_DigitCharacter);
|
||||||
|
if (ii == null)
|
||||||
|
return 0;
|
||||||
|
return ii.intValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Set Lowercase Character.
|
||||||
|
@param LowercaseCharacter
|
||||||
|
Require at least # lower case char
|
||||||
|
*/
|
||||||
|
public void setLowercaseCharacter (int LowercaseCharacter)
|
||||||
|
{
|
||||||
|
set_Value (COLUMNNAME_LowercaseCharacter, Integer.valueOf(LowercaseCharacter));
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get Lowercase Character.
|
||||||
|
@return Require at least # lower case char
|
||||||
|
*/
|
||||||
|
public int getLowercaseCharacter ()
|
||||||
|
{
|
||||||
|
Integer ii = (Integer)get_Value(COLUMNNAME_LowercaseCharacter);
|
||||||
|
if (ii == null)
|
||||||
|
return 0;
|
||||||
|
return ii.intValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Set Maximum Length.
|
||||||
|
@param MaxLength
|
||||||
|
Maximum Length of Data
|
||||||
|
*/
|
||||||
|
public void setMaxLength (int MaxLength)
|
||||||
|
{
|
||||||
|
set_Value (COLUMNNAME_MaxLength, Integer.valueOf(MaxLength));
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get Maximum Length.
|
||||||
|
@return Maximum Length of Data
|
||||||
|
*/
|
||||||
|
public int getMaxLength ()
|
||||||
|
{
|
||||||
|
Integer ii = (Integer)get_Value(COLUMNNAME_MaxLength);
|
||||||
|
if (ii == null)
|
||||||
|
return 0;
|
||||||
|
return ii.intValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Set Min Length.
|
||||||
|
@param MinLength Min Length */
|
||||||
|
public void setMinLength (int MinLength)
|
||||||
|
{
|
||||||
|
set_Value (COLUMNNAME_MinLength, Integer.valueOf(MinLength));
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get Min Length.
|
||||||
|
@return Min Length */
|
||||||
|
public int getMinLength ()
|
||||||
|
{
|
||||||
|
Integer ii = (Integer)get_Value(COLUMNNAME_MinLength);
|
||||||
|
if (ii == null)
|
||||||
|
return 0;
|
||||||
|
return ii.intValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Set Name.
|
||||||
|
@param Name
|
||||||
|
Alphanumeric identifier of the entity
|
||||||
|
*/
|
||||||
|
public void setName (String Name)
|
||||||
|
{
|
||||||
|
set_Value (COLUMNNAME_Name, Name);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get Name.
|
||||||
|
@return Alphanumeric identifier of the entity
|
||||||
|
*/
|
||||||
|
public String getName ()
|
||||||
|
{
|
||||||
|
return (String)get_Value(COLUMNNAME_Name);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get Record ID/ColumnName
|
||||||
|
@return ID/ColumnName pair
|
||||||
|
*/
|
||||||
|
public KeyNamePair getKeyNamePair()
|
||||||
|
{
|
||||||
|
return new KeyNamePair(get_ID(), getName());
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Set Non Alpha Numeric Character.
|
||||||
|
@param NonAlphaNumericCharacter
|
||||||
|
Require at least # non-alphanumeric char
|
||||||
|
*/
|
||||||
|
public void setNonAlphaNumericCharacter (int NonAlphaNumericCharacter)
|
||||||
|
{
|
||||||
|
set_Value (COLUMNNAME_NonAlphaNumericCharacter, Integer.valueOf(NonAlphaNumericCharacter));
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get Non Alpha Numeric Character.
|
||||||
|
@return Require at least # non-alphanumeric char
|
||||||
|
*/
|
||||||
|
public int getNonAlphaNumericCharacter ()
|
||||||
|
{
|
||||||
|
Integer ii = (Integer)get_Value(COLUMNNAME_NonAlphaNumericCharacter);
|
||||||
|
if (ii == null)
|
||||||
|
return 0;
|
||||||
|
return ii.intValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Set Numerical Sequence.
|
||||||
|
@param NumericalSequence
|
||||||
|
Allow numerical sequences of length #
|
||||||
|
*/
|
||||||
|
public void setNumericalSequence (int NumericalSequence)
|
||||||
|
{
|
||||||
|
set_Value (COLUMNNAME_NumericalSequence, Integer.valueOf(NumericalSequence));
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get Numerical Sequence.
|
||||||
|
@return Allow numerical sequences of length #
|
||||||
|
*/
|
||||||
|
public int getNumericalSequence ()
|
||||||
|
{
|
||||||
|
Integer ii = (Integer)get_Value(COLUMNNAME_NumericalSequence);
|
||||||
|
if (ii == null)
|
||||||
|
return 0;
|
||||||
|
return ii.intValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Set Path Dictionary.
|
||||||
|
@param PathDictionary Path Dictionary */
|
||||||
|
public void setPathDictionary (String PathDictionary)
|
||||||
|
{
|
||||||
|
set_Value (COLUMNNAME_PathDictionary, PathDictionary);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get Path Dictionary.
|
||||||
|
@return Path Dictionary */
|
||||||
|
public String getPathDictionary ()
|
||||||
|
{
|
||||||
|
return (String)get_Value(COLUMNNAME_PathDictionary);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Set QWERTY Sequence.
|
||||||
|
@param QWERTYSequence
|
||||||
|
Allow QWERTY sequences
|
||||||
|
*/
|
||||||
|
public void setQWERTYSequence (boolean QWERTYSequence)
|
||||||
|
{
|
||||||
|
set_Value (COLUMNNAME_QWERTYSequence, Boolean.valueOf(QWERTYSequence));
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get QWERTY Sequence.
|
||||||
|
@return Allow QWERTY sequences
|
||||||
|
*/
|
||||||
|
public boolean isQWERTYSequence ()
|
||||||
|
{
|
||||||
|
Object oo = get_Value(COLUMNNAME_QWERTYSequence);
|
||||||
|
if (oo != null)
|
||||||
|
{
|
||||||
|
if (oo instanceof Boolean)
|
||||||
|
return ((Boolean)oo).booleanValue();
|
||||||
|
return "Y".equals(oo);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Set Repeat Character Regex.
|
||||||
|
@param RepeatCharacterRegex Repeat Character Regex */
|
||||||
|
public void setRepeatCharacterRegex (int RepeatCharacterRegex)
|
||||||
|
{
|
||||||
|
set_Value (COLUMNNAME_RepeatCharacterRegex, Integer.valueOf(RepeatCharacterRegex));
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get Repeat Character Regex.
|
||||||
|
@return Repeat Character Regex */
|
||||||
|
public int getRepeatCharacterRegex ()
|
||||||
|
{
|
||||||
|
Integer ii = (Integer)get_Value(COLUMNNAME_RepeatCharacterRegex);
|
||||||
|
if (ii == null)
|
||||||
|
return 0;
|
||||||
|
return ii.intValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Set Uppercase Character.
|
||||||
|
@param UppercaseCharacter
|
||||||
|
Require at least # upper case char
|
||||||
|
*/
|
||||||
|
public void setUppercaseCharacter (int UppercaseCharacter)
|
||||||
|
{
|
||||||
|
set_Value (COLUMNNAME_UppercaseCharacter, Integer.valueOf(UppercaseCharacter));
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get Uppercase Character.
|
||||||
|
@return Require at least # upper case char
|
||||||
|
*/
|
||||||
|
public int getUppercaseCharacter ()
|
||||||
|
{
|
||||||
|
Integer ii = (Integer)get_Value(COLUMNNAME_UppercaseCharacter);
|
||||||
|
if (ii == null)
|
||||||
|
return 0;
|
||||||
|
return ii.intValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Set Registered EMail.
|
||||||
|
@param UserName
|
||||||
|
Email of the responsible for the System
|
||||||
|
*/
|
||||||
|
public void setUserName (boolean UserName)
|
||||||
|
{
|
||||||
|
set_Value (COLUMNNAME_UserName, Boolean.valueOf(UserName));
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get Registered EMail.
|
||||||
|
@return Email of the responsible for the System
|
||||||
|
*/
|
||||||
|
public boolean isUserName ()
|
||||||
|
{
|
||||||
|
Object oo = get_Value(COLUMNNAME_UserName);
|
||||||
|
if (oo != null)
|
||||||
|
{
|
||||||
|
if (oo instanceof Boolean)
|
||||||
|
return ((Boolean)oo).booleanValue();
|
||||||
|
return "Y".equals(oo);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Set Using Dictionary.
|
||||||
|
@param UsingDictionary Using Dictionary */
|
||||||
|
public void setUsingDictionary (boolean UsingDictionary)
|
||||||
|
{
|
||||||
|
set_Value (COLUMNNAME_UsingDictionary, Boolean.valueOf(UsingDictionary));
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get Using Dictionary.
|
||||||
|
@return Using Dictionary */
|
||||||
|
public boolean isUsingDictionary ()
|
||||||
|
{
|
||||||
|
Object oo = get_Value(COLUMNNAME_UsingDictionary);
|
||||||
|
if (oo != null)
|
||||||
|
{
|
||||||
|
if (oo instanceof Boolean)
|
||||||
|
return ((Boolean)oo).booleanValue();
|
||||||
|
return "Y".equals(oo);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Set whitespace.
|
||||||
|
@param whitespace whitespace */
|
||||||
|
public void setwhitespace (boolean whitespace)
|
||||||
|
{
|
||||||
|
set_Value (COLUMNNAME_whitespace, Boolean.valueOf(whitespace));
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Get whitespace.
|
||||||
|
@return whitespace */
|
||||||
|
public boolean iswhitespace ()
|
||||||
|
{
|
||||||
|
Object oo = get_Value(COLUMNNAME_whitespace);
|
||||||
|
if (oo != null)
|
||||||
|
{
|
||||||
|
if (oo instanceof Boolean)
|
||||||
|
return ((Boolean)oo).booleanValue();
|
||||||
|
return "Y".equals(oo);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
|
@ -68,7 +68,6 @@ import org.zkoss.zhtml.Td;
|
||||||
import org.zkoss.zhtml.Tr;
|
import org.zkoss.zhtml.Tr;
|
||||||
import org.zkoss.zk.au.out.AuFocus;
|
import org.zkoss.zk.au.out.AuFocus;
|
||||||
import org.zkoss.zk.au.out.AuScript;
|
import org.zkoss.zk.au.out.AuScript;
|
||||||
import org.zkoss.zk.fn.ZkFns;
|
|
||||||
import org.zkoss.zk.ui.Component;
|
import org.zkoss.zk.ui.Component;
|
||||||
import org.zkoss.zk.ui.Executions;
|
import org.zkoss.zk.ui.Executions;
|
||||||
import org.zkoss.zk.ui.Session;
|
import org.zkoss.zk.ui.Session;
|
||||||
|
@ -109,6 +108,7 @@ public class LoginPanel extends Window implements EventListener
|
||||||
private Combobox lstLanguage;
|
private Combobox lstLanguage;
|
||||||
private LoginWindow wndLogin;
|
private LoginWindow wndLogin;
|
||||||
private Checkbox chkRememberMe;
|
private Checkbox chkRememberMe;
|
||||||
|
private Checkbox chkSelectRole;
|
||||||
|
|
||||||
public LoginPanel(Properties ctx, LoginWindow loginWindow)
|
public LoginPanel(Properties ctx, LoginWindow loginWindow)
|
||||||
{
|
{
|
||||||
|
@ -200,6 +200,17 @@ public class LoginPanel extends Window implements EventListener
|
||||||
td.setSclass(ITheme.LOGIN_FIELD_CLASS);
|
td.setSclass(ITheme.LOGIN_FIELD_CLASS);
|
||||||
tr.appendChild(td);
|
tr.appendChild(td);
|
||||||
td.appendChild(chkRememberMe);
|
td.appendChild(chkRememberMe);
|
||||||
|
tr = new Tr();
|
||||||
|
tr.setId("rowSelectRole");
|
||||||
|
table.appendChild(tr);
|
||||||
|
td = new Td();
|
||||||
|
tr.appendChild(td);
|
||||||
|
td.setSclass(ITheme.LOGIN_LABEL_CLASS);
|
||||||
|
td.appendChild(new Label(""));
|
||||||
|
td = new Td();
|
||||||
|
td.setSclass(ITheme.LOGIN_FIELD_CLASS);
|
||||||
|
tr.appendChild(td);
|
||||||
|
td.appendChild(chkSelectRole);
|
||||||
}
|
}
|
||||||
|
|
||||||
div = new Div();
|
div = new Div();
|
||||||
|
@ -240,6 +251,7 @@ public class LoginPanel extends Window implements EventListener
|
||||||
txtPassword.setAttribute("user.token.hash", token);
|
txtPassword.setAttribute("user.token.hash", token);
|
||||||
txtPassword.setAttribute("user.token.sid", AD_Session_ID);
|
txtPassword.setAttribute("user.token.sid", AD_Session_ID);
|
||||||
}
|
}
|
||||||
|
chkSelectRole.setChecked(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -305,6 +317,8 @@ public class LoginPanel extends Window implements EventListener
|
||||||
|
|
||||||
chkRememberMe = new Checkbox(Msg.getMsg(Language.getBaseAD_Language(), "RememberMe"));
|
chkRememberMe = new Checkbox(Msg.getMsg(Language.getBaseAD_Language(), "RememberMe"));
|
||||||
|
|
||||||
|
chkSelectRole = new Checkbox(Msg.getMsg(Language.getBaseAD_Language(), "SelectRole"));
|
||||||
|
|
||||||
// Make the default language the language of client System
|
// Make the default language the language of client System
|
||||||
String defaultLanguage = MClient.get(ctx, 0).getAD_Language();
|
String defaultLanguage = MClient.get(ctx, 0).getAD_Language();
|
||||||
for(int i = 0; i < lstLanguage.getItemCount(); i++)
|
for(int i = 0; i < lstLanguage.getItemCount(); i++)
|
||||||
|
@ -393,6 +407,8 @@ public class LoginPanel extends Window implements EventListener
|
||||||
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"));
|
chkRememberMe.setLabel(Msg.getMsg(language, "RememberMe"));
|
||||||
|
chkSelectRole.setLabel(Msg.getMsg(language, "SelectRole"));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Language findLanguage(String langName) {
|
private Language findLanguage(String langName) {
|
||||||
|
@ -431,6 +447,8 @@ public class LoginPanel extends Window implements EventListener
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Env.setContext(ctx, BrowserToken.REMEMBER_ME, chkRememberMe.isChecked());
|
||||||
|
|
||||||
Session currSess = Executions.getCurrent().getDesktop().getSession();
|
Session currSess = Executions.getCurrent().getDesktop().getSession();
|
||||||
|
|
||||||
KeyNamePair rolesKNPairs[] = login.getRoles(userId, userPassword);
|
KeyNamePair rolesKNPairs[] = login.getRoles(userId, userPassword);
|
||||||
|
@ -445,10 +463,10 @@ public class LoginPanel extends Window implements EventListener
|
||||||
else
|
else
|
||||||
langName = Language.getBaseLanguage().getName();
|
langName = Language.getBaseLanguage().getName();
|
||||||
Language language = findLanguage(langName);
|
Language language = findLanguage(langName);
|
||||||
wndLogin.loginOk(userId, userPassword);
|
|
||||||
|
|
||||||
Env.setContext(ctx, UserPreference.LANGUAGE_NAME, language.getName()); // Elaine 2009/02/06
|
Env.setContext(ctx, UserPreference.LANGUAGE_NAME, language.getName()); // Elaine 2009/02/06
|
||||||
|
|
||||||
|
wndLogin.loginOk(userId, userPassword, chkSelectRole.isChecked());
|
||||||
|
|
||||||
Locale locale = language.getLocale();
|
Locale locale = language.getLocale();
|
||||||
currSess.setAttribute(Attributes.PREFERRED_LOCALE, locale);
|
currSess.setAttribute(Attributes.PREFERRED_LOCALE, locale);
|
||||||
try {
|
try {
|
||||||
|
@ -470,8 +488,6 @@ public class LoginPanel extends Window implements EventListener
|
||||||
currSess.setAttribute("Check_AD_User_ID", Env.getAD_User_ID(ctx));
|
currSess.setAttribute("Check_AD_User_ID", Env.getAD_User_ID(ctx));
|
||||||
// End of temporary code for [ adempiere-ZK Web Client-2832968 ] User context lost?
|
// End of temporary code for [ adempiere-ZK Web Client-2832968 ] User context lost?
|
||||||
|
|
||||||
Env.setContext(ctx, BrowserToken.REMEMBER_ME, chkRememberMe.isChecked());
|
|
||||||
|
|
||||||
/* Check DB version */
|
/* Check DB version */
|
||||||
String version = DB.getSQLValueString(null, "SELECT Version FROM AD_System");
|
String version = DB.getSQLValueString(null, "SELECT Version FROM AD_System");
|
||||||
// Identical DB version
|
// Identical DB version
|
||||||
|
|
|
@ -97,11 +97,14 @@ public class RolePanel extends Window implements EventListener, Deferrable
|
||||||
/** Password */
|
/** Password */
|
||||||
private String m_password;
|
private String m_password;
|
||||||
|
|
||||||
public RolePanel(Properties ctx, LoginWindow loginWindow, String userName, String password) {
|
private boolean m_show = true;
|
||||||
|
|
||||||
|
public RolePanel(Properties ctx, LoginWindow loginWindow, String userName, String password, boolean show) {
|
||||||
this.wndLogin = loginWindow;
|
this.wndLogin = loginWindow;
|
||||||
m_ctx = ctx;
|
m_ctx = ctx;
|
||||||
m_userName = userName;
|
m_userName = userName;
|
||||||
m_password = password; login = new Login(ctx);
|
m_password = password; login = new Login(ctx);
|
||||||
|
m_show = show;
|
||||||
rolesKNPairs = login.getRoles(userName, password);
|
rolesKNPairs = login.getRoles(userName, password);
|
||||||
if(rolesKNPairs == null)
|
if(rolesKNPairs == null)
|
||||||
throw new ApplicationException("Login is invalid, UserName: " + userName + " and Password:" + password);
|
throw new ApplicationException("Login is invalid, UserName: " + userName + " and Password:" + password);
|
||||||
|
@ -110,8 +113,12 @@ public class RolePanel extends Window implements EventListener, Deferrable
|
||||||
init();
|
init();
|
||||||
this.setId("rolePanel");
|
this.setId("rolePanel");
|
||||||
|
|
||||||
AuFocus auf = new AuFocus(lstRole);
|
if (m_show) {
|
||||||
Clients.response(auf);
|
AuFocus auf = new AuFocus(lstRole);
|
||||||
|
Clients.response(auf);
|
||||||
|
} else {
|
||||||
|
validateRoles();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void init()
|
private void init()
|
||||||
|
@ -298,8 +305,10 @@ public class RolePanel extends Window implements EventListener, Deferrable
|
||||||
if(rolesKNPairs[i].getID().equals(initDefault))
|
if(rolesKNPairs[i].getID().equals(initDefault))
|
||||||
lstRole.setSelectedItem(ci);
|
lstRole.setSelectedItem(ci);
|
||||||
}
|
}
|
||||||
if (lstRole.getSelectedIndex() == -1 && lstRole.getItemCount() > 0)
|
if (lstRole.getSelectedIndex() == -1 && lstRole.getItemCount() > 0) {
|
||||||
|
m_show = true; // didn't find default role
|
||||||
lstRole.setSelectedIndex(0);
|
lstRole.setSelectedIndex(0);
|
||||||
|
}
|
||||||
//
|
//
|
||||||
|
|
||||||
// If we have only one role, we can hide the combobox - metas-2009_0021_AP1_G94
|
// If we have only one role, we can hide the combobox - metas-2009_0021_AP1_G94
|
||||||
|
@ -338,8 +347,10 @@ public class RolePanel extends Window implements EventListener, Deferrable
|
||||||
if(clientKNPairs[i].getID().equals(initDefault))
|
if(clientKNPairs[i].getID().equals(initDefault))
|
||||||
lstClient.setSelectedItem(ci);
|
lstClient.setSelectedItem(ci);
|
||||||
}
|
}
|
||||||
if (lstClient.getSelectedIndex() == -1 && lstClient.getItemCount() > 0)
|
if (lstClient.getSelectedIndex() == -1 && lstClient.getItemCount() > 0) {
|
||||||
|
m_show = true; // didn't find default client
|
||||||
lstClient.setSelectedIndex(0);
|
lstClient.setSelectedIndex(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
|
|
||||||
|
@ -372,8 +383,10 @@ public class RolePanel extends Window implements EventListener, Deferrable
|
||||||
lstOrganisation.setSelectedItem(ci);
|
lstOrganisation.setSelectedItem(ci);
|
||||||
|
|
||||||
}
|
}
|
||||||
if (lstOrganisation.getSelectedIndex() == -1 && lstOrganisation.getItemCount() > 0)
|
if (lstOrganisation.getSelectedIndex() == -1 && lstOrganisation.getItemCount() > 0) {
|
||||||
|
m_show = true; // didn't find default organisation
|
||||||
lstOrganisation.setSelectedIndex(0);
|
lstOrganisation.setSelectedIndex(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
|
@ -401,8 +414,10 @@ public class RolePanel extends Window implements EventListener, Deferrable
|
||||||
if(warehouseKNPairs[i].getID().equals(initDefault))
|
if(warehouseKNPairs[i].getID().equals(initDefault))
|
||||||
lstWarehouse.setSelectedItem(ci);
|
lstWarehouse.setSelectedItem(ci);
|
||||||
}
|
}
|
||||||
if (lstWarehouse.getSelectedIndex() == -1 && lstWarehouse.getItemCount() > 0)
|
if (lstWarehouse.getSelectedIndex() == -1 && lstWarehouse.getItemCount() > 0) {
|
||||||
|
m_show = true; // didn't find default warehouse
|
||||||
lstWarehouse.setSelectedIndex(0);
|
lstWarehouse.setSelectedIndex(0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//
|
//
|
||||||
}
|
}
|
||||||
|
|
|
@ -74,9 +74,9 @@ public class LoginWindow extends FWindow implements EventListener
|
||||||
pnlLogin = new LoginPanel(ctx, this);
|
pnlLogin = new LoginPanel(ctx, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void loginOk(String userName, String password)
|
public void loginOk(String userName, String password, boolean show)
|
||||||
{
|
{
|
||||||
pnlRole = new RolePanel(ctx, this, userName, password);
|
pnlRole = new RolePanel(ctx, this, userName, password, show);
|
||||||
this.getChildren().clear();
|
this.getChildren().clear();
|
||||||
this.appendChild(pnlRole);
|
this.appendChild(pnlRole);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue