diff --git a/migration/360lts-release/oracle/865_IDEMPIERE-221.sql b/migration/360lts-release/oracle/865_IDEMPIERE-221.sql new file mode 100644 index 0000000000..80ca2a45bc --- /dev/null +++ b/migration/360lts-release/oracle/865_IDEMPIERE-221.sql @@ -0,0 +1,594 @@ +-- Aug 6, 2012 12:39:27 PM COT +-- IDEMPIERE-221 Implement password policies +UPDATE AD_Table SET AD_Window_ID=200002,Updated=TO_DATE('2012-08-06 12:39:27','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Table_ID=200005 +; + +-- Aug 6, 2012 12:44:29 PM COT +UPDATE AD_Field SET SeqNo=40,IsDisplayed='Y' WHERE AD_Field_ID=200252 +; + +-- Aug 6, 2012 12:44:29 PM COT +UPDATE AD_Field SET SeqNo=60,IsDisplayed='Y' WHERE AD_Field_ID=200076 +; + +-- Aug 6, 2012 12:44:29 PM COT +UPDATE AD_Field SET SeqNo=70,IsDisplayed='Y' WHERE AD_Field_ID=200081 +; + +-- Aug 6, 2012 12:44:29 PM COT +UPDATE AD_Field SET SeqNo=80,IsDisplayed='Y' WHERE AD_Field_ID=200256 +; + +-- Aug 6, 2012 12:44:29 PM COT +UPDATE AD_Field SET SeqNo=120,IsDisplayed='Y' WHERE AD_Field_ID=200086 +; + +-- Aug 6, 2012 12:44:29 PM COT +UPDATE AD_Field SET SeqNo=130,IsDisplayed='Y' WHERE AD_Field_ID=200089 +; + +-- Aug 6, 2012 12:44:29 PM COT +UPDATE AD_Field SET SeqNo=140,IsDisplayed='Y' WHERE AD_Field_ID=200094 +; + +-- Aug 6, 2012 12:44:29 PM COT +UPDATE AD_Field SET SeqNo=150,IsDisplayed='Y' WHERE AD_Field_ID=200093 +; + +-- Aug 6, 2012 12:44:29 PM COT +UPDATE AD_Field SET SeqNo=160,IsDisplayed='Y' WHERE AD_Field_ID=200254 +; + +-- Aug 6, 2012 12:44:29 PM COT +UPDATE AD_Field SET SeqNo=170,IsDisplayed='Y' WHERE AD_Field_ID=200079 +; + +-- Aug 6, 2012 12:44:29 PM COT +UPDATE AD_Field SET SeqNo=180,IsDisplayed='Y' WHERE AD_Field_ID=200080 +; + +-- Aug 6, 2012 12:44:29 PM COT +UPDATE AD_Field SET SeqNo=190,IsDisplayed='Y' WHERE AD_Field_ID=200251 +; + +-- Aug 6, 2012 12:44:29 PM COT +UPDATE AD_Field SET SeqNo=200,IsDisplayed='Y' WHERE AD_Field_ID=200074 +; + +-- Aug 6, 2012 12:44:46 PM COT +UPDATE AD_Field SET IsSameLine='Y',Updated=TO_DATE('2012-08-06 12:44:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200083 +; + +-- Aug 6, 2012 12:45:17 PM COT +UPDATE AD_Element SET Name='Minimum Length', PrintName='Minimum Length',Updated=TO_DATE('2012-08-06 12:45:17','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=200065 +; + +-- Aug 6, 2012 12:45:17 PM COT +UPDATE AD_Element_Trl SET IsTranslated='N' WHERE AD_Element_ID=200065 +; + +-- Aug 6, 2012 12:45:17 PM COT +UPDATE AD_Column SET ColumnName='MinLength', Name='Minimum Length', Description=NULL, Help=NULL WHERE AD_Element_ID=200065 +; + +-- Aug 6, 2012 12:45:17 PM COT +UPDATE AD_Process_Para SET ColumnName='MinLength', Name='Minimum Length', Description=NULL, Help=NULL, AD_Element_ID=200065 WHERE UPPER(ColumnName)='MINLENGTH' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL +; + +-- Aug 6, 2012 12:45:17 PM COT +UPDATE AD_Process_Para SET ColumnName='MinLength', Name='Minimum Length', Description=NULL, Help=NULL WHERE AD_Element_ID=200065 AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 12:45:17 PM COT +UPDATE AD_Field SET Name='Minimum Length', Description=NULL, Help=NULL WHERE AD_Column_ID IN (SELECT AD_Column_ID FROM AD_Column WHERE AD_Element_ID=200065) AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 12:45:17 PM COT +UPDATE AD_PrintFormatItem pi SET PrintName='Minimum Length', Name='Minimum Length' WHERE IsCentrallyMaintained='Y' AND EXISTS (SELECT * FROM AD_Column c WHERE c.AD_Column_ID=pi.AD_Column_ID AND c.AD_Element_ID=200065) +; + +-- Aug 6, 2012 12:45:54 PM COT +UPDATE AD_Field SET IsSameLine='Y',Updated=TO_DATE('2012-08-06 12:45:54','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200081 +; + +-- Aug 6, 2012 12:45:58 PM COT +UPDATE AD_Field SET IsSameLine='Y',Updated=TO_DATE('2012-08-06 12:45:58','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200082 +; + +-- Aug 6, 2012 12:46:09 PM COT +UPDATE AD_Field SET IsSameLine='Y',Updated=TO_DATE('2012-08-06 12:46:09','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200089 +; + +-- Aug 6, 2012 12:46:45 PM COT +UPDATE AD_Element SET Name='Whitespace', PrintName='Whitespace',Updated=TO_DATE('2012-08-06 12:46:45','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=200030 +; + +-- Aug 6, 2012 12:46:45 PM COT +UPDATE AD_Element_Trl SET IsTranslated='N' WHERE AD_Element_ID=200030 +; + +-- Aug 6, 2012 12:46:45 PM COT +UPDATE AD_Column SET ColumnName='whitespace', Name='Whitespace', Description=NULL, Help=NULL WHERE AD_Element_ID=200030 +; + +-- Aug 6, 2012 12:46:45 PM COT +UPDATE AD_Process_Para SET ColumnName='whitespace', Name='Whitespace', Description=NULL, Help=NULL, AD_Element_ID=200030 WHERE UPPER(ColumnName)='WHITESPACE' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL +; + +-- Aug 6, 2012 12:46:45 PM COT +UPDATE AD_Process_Para SET ColumnName='whitespace', Name='Whitespace', Description=NULL, Help=NULL WHERE AD_Element_ID=200030 AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 12:46:45 PM COT +UPDATE AD_Field SET Name='Whitespace', Description=NULL, Help=NULL WHERE AD_Column_ID IN (SELECT AD_Column_ID FROM AD_Column WHERE AD_Element_ID=200030) AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 12:46:45 PM COT +UPDATE AD_PrintFormatItem pi SET PrintName='Whitespace', Name='Whitespace' WHERE IsCentrallyMaintained='Y' AND EXISTS (SELECT * FROM AD_Column c WHERE c.AD_Column_ID=pi.AD_Column_ID AND c.AD_Element_ID=200030) +; + +-- Aug 6, 2012 12:47:20 PM COT +UPDATE AD_Field SET SeqNo=120,IsDisplayed='Y' WHERE AD_Field_ID=200251 +; + +-- Aug 6, 2012 12:47:20 PM COT +UPDATE AD_Field SET SeqNo=130,IsDisplayed='Y' WHERE AD_Field_ID=200086 +; + +-- Aug 6, 2012 12:47:20 PM COT +UPDATE AD_Field SET SeqNo=140,IsDisplayed='Y' WHERE AD_Field_ID=200089 +; + +-- Aug 6, 2012 12:47:20 PM COT +UPDATE AD_Field SET SeqNo=150,IsDisplayed='Y' WHERE AD_Field_ID=200094 +; + +-- Aug 6, 2012 12:47:20 PM COT +UPDATE AD_Field SET SeqNo=160,IsDisplayed='Y' WHERE AD_Field_ID=200093 +; + +-- Aug 6, 2012 12:47:20 PM COT +UPDATE AD_Field SET SeqNo=170,IsDisplayed='Y' WHERE AD_Field_ID=200254 +; + +-- Aug 6, 2012 12:47:20 PM COT +UPDATE AD_Field SET SeqNo=180,IsDisplayed='Y' WHERE AD_Field_ID=200079 +; + +-- Aug 6, 2012 12:47:20 PM COT +UPDATE AD_Field SET SeqNo=190,IsDisplayed='Y' WHERE AD_Field_ID=200080 +; + +-- Aug 6, 2012 12:47:31 PM COT +UPDATE AD_Field SET IsSameLine='Y',Updated=TO_DATE('2012-08-06 12:47:31','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200086 +; + +-- Aug 6, 2012 12:47:35 PM COT +UPDATE AD_Field SET IsSameLine='N',Updated=TO_DATE('2012-08-06 12:47:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200089 +; + +-- Aug 6, 2012 12:47:39 PM COT +UPDATE AD_Field SET IsSameLine='Y',Updated=TO_DATE('2012-08-06 12:47:39','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200094 +; + +-- Aug 6, 2012 12:47:56 PM COT +UPDATE AD_Field SET SeqNo=170,IsDisplayed='Y' WHERE AD_Field_ID=200079 +; + +-- Aug 6, 2012 12:47:56 PM COT +UPDATE AD_Field SET SeqNo=180,IsDisplayed='Y' WHERE AD_Field_ID=200254 +; + +-- Aug 6, 2012 12:48:02 PM COT +UPDATE AD_Field SET IsSameLine='Y',Updated=TO_DATE('2012-08-06 12:48:02','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200079 +; + +-- Aug 6, 2012 1:25:02 PM COT +UPDATE AD_Column SET FieldLength=10, AD_Reference_ID=11,Updated=TO_DATE('2012-08-06 13:25:02','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200236 +; + +-- Aug 6, 2012 1:25:19 PM COT +UPDATE AD_Element SET Description='Lenght of required alphabetical sequence',Updated=TO_DATE('2012-08-06 13:25:19','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=200068 +; + +-- Aug 6, 2012 1:25:19 PM COT +UPDATE AD_Element_Trl SET IsTranslated='N' WHERE AD_Element_ID=200068 +; + +-- Aug 6, 2012 1:25:19 PM COT +UPDATE AD_Column SET ColumnName='AlphabeticalSequence', Name='Alphabetical Sequence', Description='Lenght of required alphabetical sequence', Help=NULL WHERE AD_Element_ID=200068 +; + +-- Aug 6, 2012 1:25:19 PM COT +UPDATE AD_Process_Para SET ColumnName='AlphabeticalSequence', Name='Alphabetical Sequence', Description='Lenght of required alphabetical sequence', Help=NULL, AD_Element_ID=200068 WHERE UPPER(ColumnName)='ALPHABETICALSEQUENCE' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL +; + +-- Aug 6, 2012 1:25:19 PM COT +UPDATE AD_Process_Para SET ColumnName='AlphabeticalSequence', Name='Alphabetical Sequence', Description='Lenght of required alphabetical sequence', Help=NULL WHERE AD_Element_ID=200068 AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 1:25:19 PM COT +UPDATE AD_Field SET Name='Alphabetical Sequence', Description='Lenght of required alphabetical sequence', Help=NULL WHERE AD_Column_ID IN (SELECT AD_Column_ID FROM AD_Column WHERE AD_Element_ID=200068) AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 1:25:31 PM COT +ALTER TABLE ad_passwordrule DROP ( AlphabeticalSequence ) CASCADE CONSTRAINT +; + +-- Aug 6, 2012 1:27:54 PM COT +ALTER TABLE AD_PasswordRule ADD AlphabeticalSequence NUMBER(10) DEFAULT NULL +; + +-- Aug 6, 2012 1:28:58 PM COT +UPDATE AD_Column SET FieldLength=10, AD_Reference_ID=11,Updated=TO_DATE('2012-08-06 13:28:58','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200131 +; + +ALTER TABLE ad_passwordrule DROP ( QWERTYSequence ) CASCADE CONSTRAINT +; + +-- Aug 6, 2012 1:29:01 PM COT +ALTER TABLE AD_PasswordRule ADD QWERTYSequence NUMBER(10) DEFAULT NULL +; + +-- Aug 6, 2012 1:29:26 PM COT +UPDATE AD_Element SET Description='Lenght of QWERTY sequences to validate',Updated=TO_DATE('2012-08-06 13:29:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=200029 +; + +-- Aug 6, 2012 1:29:26 PM COT +UPDATE AD_Element_Trl SET IsTranslated='N' WHERE AD_Element_ID=200029 +; + +-- Aug 6, 2012 1:29:26 PM COT +UPDATE AD_Column SET ColumnName='QWERTYSequence', Name='QWERTY Sequence', Description='Lenght of QWERTY sequences to validate', Help=NULL WHERE AD_Element_ID=200029 +; + +-- Aug 6, 2012 1:29:26 PM COT +UPDATE AD_Process_Para SET ColumnName='QWERTYSequence', Name='QWERTY Sequence', Description='Lenght of QWERTY sequences to validate', Help=NULL, AD_Element_ID=200029 WHERE UPPER(ColumnName)='QWERTYSEQUENCE' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL +; + +-- Aug 6, 2012 1:29:26 PM COT +UPDATE AD_Process_Para SET ColumnName='QWERTYSequence', Name='QWERTY Sequence', Description='Lenght of QWERTY sequences to validate', Help=NULL WHERE AD_Element_ID=200029 AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 1:29:26 PM COT +UPDATE AD_Field SET Name='QWERTY Sequence', Description='Lenght of QWERTY sequences to validate', Help=NULL WHERE AD_Column_ID IN (SELECT AD_Column_ID FROM AD_Column WHERE AD_Element_ID=200029) AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 1:29:52 PM COT +UPDATE AD_Element SET Description='Lenght of alphabetical sequence to validate',Updated=TO_DATE('2012-08-06 13:29:52','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=200068 +; + +-- Aug 6, 2012 1:29:52 PM COT +UPDATE AD_Element_Trl SET IsTranslated='N' WHERE AD_Element_ID=200068 +; + +-- Aug 6, 2012 1:29:52 PM COT +UPDATE AD_Column SET ColumnName='AlphabeticalSequence', Name='Alphabetical Sequence', Description='Lenght of alphabetical sequence to validate', Help=NULL WHERE AD_Element_ID=200068 +; + +-- Aug 6, 2012 1:29:52 PM COT +UPDATE AD_Process_Para SET ColumnName='AlphabeticalSequence', Name='Alphabetical Sequence', Description='Lenght of alphabetical sequence to validate', Help=NULL, AD_Element_ID=200068 WHERE UPPER(ColumnName)='ALPHABETICALSEQUENCE' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL +; + +-- Aug 6, 2012 1:29:52 PM COT +UPDATE AD_Process_Para SET ColumnName='AlphabeticalSequence', Name='Alphabetical Sequence', Description='Lenght of alphabetical sequence to validate', Help=NULL WHERE AD_Element_ID=200068 AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 1:29:52 PM COT +UPDATE AD_Field SET Name='Alphabetical Sequence', Description='Lenght of alphabetical sequence to validate', Help=NULL WHERE AD_Column_ID IN (SELECT AD_Column_ID FROM AD_Column WHERE AD_Element_ID=200068) AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 1:30:38 PM COT +UPDATE AD_Element SET Description='Length of numerical sequence to validate',Updated=TO_DATE('2012-08-06 13:30:38','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=200028 +; + +-- Aug 6, 2012 1:30:38 PM COT +UPDATE AD_Element_Trl SET IsTranslated='N' WHERE AD_Element_ID=200028 +; + +-- Aug 6, 2012 1:30:38 PM COT +UPDATE AD_Column SET ColumnName='NumericalSequence', Name='Numerical Sequence', Description='Length of numerical sequence to validate', Help=NULL WHERE AD_Element_ID=200028 +; + +-- Aug 6, 2012 1:30:38 PM COT +UPDATE AD_Process_Para SET ColumnName='NumericalSequence', Name='Numerical Sequence', Description='Length of numerical sequence to validate', Help=NULL, AD_Element_ID=200028 WHERE UPPER(ColumnName)='NUMERICALSEQUENCE' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL +; + +-- Aug 6, 2012 1:30:38 PM COT +UPDATE AD_Process_Para SET ColumnName='NumericalSequence', Name='Numerical Sequence', Description='Length of numerical sequence to validate', Help=NULL WHERE AD_Element_ID=200028 AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 1:30:38 PM COT +UPDATE AD_Field SET Name='Numerical Sequence', Description='Length of numerical sequence to validate', Help=NULL WHERE AD_Column_ID IN (SELECT AD_Column_ID FROM AD_Column WHERE AD_Element_ID=200028) AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 1:31:18 PM COT +UPDATE AD_Element SET Description='Require at least # alphabetical in passwords',Updated=TO_DATE('2012-08-06 13:31:18','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=200027 +; + +-- Aug 6, 2012 1:31:18 PM COT +UPDATE AD_Element_Trl SET IsTranslated='N' WHERE AD_Element_ID=200027 +; + +-- Aug 6, 2012 1:31:18 PM COT +UPDATE AD_Column SET ColumnName='AlphabeticalCharacter', Name='Alphabetical Character', Description='Require at least # alphabetical in passwords', Help=NULL WHERE AD_Element_ID=200027 +; + +-- Aug 6, 2012 1:31:18 PM COT +UPDATE AD_Process_Para SET ColumnName='AlphabeticalCharacter', Name='Alphabetical Character', Description='Require at least # alphabetical in passwords', Help=NULL, AD_Element_ID=200027 WHERE UPPER(ColumnName)='ALPHABETICALCHARACTER' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL +; + +-- Aug 6, 2012 1:31:18 PM COT +UPDATE AD_Process_Para SET ColumnName='AlphabeticalCharacter', Name='Alphabetical Character', Description='Require at least # alphabetical in passwords', Help=NULL WHERE AD_Element_ID=200027 AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 1:31:18 PM COT +UPDATE AD_Field SET Name='Alphabetical Character', Description='Require at least # alphabetical in passwords', Help=NULL WHERE AD_Column_ID IN (SELECT AD_Column_ID FROM AD_Column WHERE AD_Element_ID=200027) AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 1:32:21 PM COT +UPDATE AD_Element SET Description='Length of repeated characters to validate',Updated=TO_DATE('2012-08-06 13:32:21','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=200069 +; + +-- Aug 6, 2012 1:32:21 PM COT +UPDATE AD_Element_Trl SET IsTranslated='N' WHERE AD_Element_ID=200069 +; + +-- Aug 6, 2012 1:32:21 PM COT +UPDATE AD_Column SET ColumnName='RepeatCharacterRegex', Name='Repeat Character Regex', Description='Length of repeated characters to validate', Help=NULL WHERE AD_Element_ID=200069 +; + +-- Aug 6, 2012 1:32:21 PM COT +UPDATE AD_Process_Para SET ColumnName='RepeatCharacterRegex', Name='Repeat Character Regex', Description='Length of repeated characters to validate', Help=NULL, AD_Element_ID=200069 WHERE UPPER(ColumnName)='REPEATCHARACTERREGEX' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL +; + +-- Aug 6, 2012 1:32:21 PM COT +UPDATE AD_Process_Para SET ColumnName='RepeatCharacterRegex', Name='Repeat Character Regex', Description='Length of repeated characters to validate', Help=NULL WHERE AD_Element_ID=200069 AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 1:32:21 PM COT +UPDATE AD_Field SET Name='Repeat Character Regex', Description='Length of repeated characters to validate', Help=NULL WHERE AD_Column_ID IN (SELECT AD_Column_ID FROM AD_Column WHERE AD_Element_ID=200069) AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 1:34:52 PM COT +UPDATE AD_Element SET ColumnName='IsDictMatchBackwards',Updated=TO_DATE('2012-08-06 13:34:52','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=200033 +; + +-- Aug 6, 2012 1:34:52 PM COT +UPDATE AD_Column SET ColumnName='IsDictMatchBackwards', Name='Match Backwards of Dictionary', Description='Match dictionary words backwards', Help=NULL WHERE AD_Element_ID=200033 +; + +-- Aug 6, 2012 1:34:52 PM COT +UPDATE AD_Process_Para SET ColumnName='IsDictMatchBackwards', Name='Match Backwards of Dictionary', Description='Match dictionary words backwards', Help=NULL, AD_Element_ID=200033 WHERE UPPER(ColumnName)='ISDICTMATCHBACKWARDS' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL +; + +-- Aug 6, 2012 1:34:52 PM COT +UPDATE AD_Process_Para SET ColumnName='IsDictMatchBackwards', Name='Match Backwards of Dictionary', Description='Match dictionary words backwards', Help=NULL WHERE AD_Element_ID=200033 AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 1:35:09 PM COT +UPDATE AD_Column SET IsMandatory='Y', DefaultValue='N',Updated=TO_DATE('2012-08-06 13:35:09','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200138 +; + +-- Aug 6, 2012 1:35:12 PM COT +ALTER TABLE ad_passwordrule RENAME COLUMN DictMatchBackwards TO IsDictMatchBackwards +; + +-- Aug 6, 2012 1:35:32 PM COT +UPDATE AD_Column SET IsMandatory='Y', DefaultValue='N',Updated=TO_DATE('2012-08-06 13:35:32','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200133 +; + +-- Aug 6, 2012 1:35:33 PM COT +ALTER TABLE ad_passwordrule RENAME COLUMN whitespace TO iswhitespace +; + +-- Aug 6, 2012 1:36:48 PM COT +DELETE FROM AD_Column_Trl WHERE AD_Column_ID=200240 +; + +-- Aug 6, 2012 1:36:48 PM COT +DELETE FROM AD_Column WHERE AD_Column_ID=200240 +; + +-- Aug 6, 2012 2:16:41 PM COT +INSERT INTO AD_Element (ColumnName,AD_Element_ID,EntityType,Name,Description,PrintName,AD_Element_UU,AD_Client_ID,Created,Updated,AD_Org_ID,CreatedBy,UpdatedBy,IsActive) VALUES ('IsUserNameRule',200072,'D','User Name Rule','Validate the password doesn''t contain user name (ignore case and match backwards)','User Name Rule','9eda063a-90bd-442f-95ed-89804cf6497a',0,TO_DATE('2012-08-06 14:16:40','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2012-08-06 14:16:40','YYYY-MM-DD HH24:MI:SS'),0,100,100,'Y') +; + +-- Aug 6, 2012 2:16:41 PM COT +INSERT INTO AD_Element_Trl (AD_Language,AD_Element_ID, Help,PO_Description,PO_Help,Name,Description,PrintName,PO_Name,PO_PrintName, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Element_Trl_UU ) SELECT l.AD_Language,t.AD_Element_ID, t.Help,t.PO_Description,t.PO_Help,t.Name,t.Description,t.PrintName,t.PO_Name,t.PO_PrintName, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Element t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Element_ID=200072 AND NOT EXISTS (SELECT * FROM AD_Element_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Element_ID=t.AD_Element_ID) +; + +-- Aug 6, 2012 1:37:02 PM COT +UPDATE AD_Column SET IsMandatory='Y', AD_Element_ID=200072, ColumnName='IsUserNameRule', Description='Validate the password doesn''t contain user name (ignore case and match backwards)', DefaultValue='N', Help=NULL, Name='User Name Rule',Updated=TO_DATE('2012-08-06 13:37:02','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200134 +; + +-- Aug 6, 2012 1:37:02 PM COT +UPDATE AD_Column_Trl SET IsTranslated='N' WHERE AD_Column_ID=200134 +; + +-- Aug 6, 2012 1:37:02 PM COT +UPDATE AD_Field SET Name='User Name Rule', Description='Validate the password doesn''t contain user name (ignore case and match backwards)', Help=NULL WHERE AD_Column_ID=200134 AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 1:34:16 PM COT +ALTER TABLE ad_passwordrule RENAME COLUMN username TO IsUserNameRule +; + +-- Aug 6, 2012 1:37:03 PM COT +UPDATE AD_PasswordRule SET IsUserNameRule='N' WHERE IsUserNameRule IS NULL +; + +-- Aug 6, 2012 1:37:10 PM COT +UPDATE AD_Field SET SeqNo=210,IsDisplayed='Y' WHERE AD_Field_ID=200090 +; + +-- Aug 6, 2012 1:37:57 PM COT +UPDATE AD_Element SET ColumnName='IsUsingDictionary',Updated=TO_DATE('2012-08-06 13:37:57','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=200031 +; + +-- Aug 6, 2012 1:37:57 PM COT +UPDATE AD_Column SET ColumnName='IsUsingDictionary', Name='Using Dictionary', Description=NULL, Help=NULL WHERE AD_Element_ID=200031 +; + +-- Aug 6, 2012 1:37:57 PM COT +UPDATE AD_Process_Para SET ColumnName='IsUsingDictionary', Name='Using Dictionary', Description=NULL, Help=NULL, AD_Element_ID=200031 WHERE UPPER(ColumnName)='ISUSINGDICTIONARY' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL +; + +-- Aug 6, 2012 1:37:57 PM COT +UPDATE AD_Process_Para SET ColumnName='IsUsingDictionary', Name='Using Dictionary', Description=NULL, Help=NULL WHERE AD_Element_ID=200031 AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 1:38:17 PM COT +UPDATE AD_Column SET IsMandatory='Y', DefaultValue='N',Updated=TO_DATE('2012-08-06 13:38:17','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200135 +; + +-- Aug 6, 2012 1:38:18 PM COT +ALTER TABLE ad_passwordrule RENAME COLUMN UsingDictionary TO IsUsingDictionary +; + +-- Aug 6, 2012 1:57:03 PM COT +UPDATE AD_Column SET IsMandatory='Y', DefaultValue='Y', IsAllowCopy='N',Updated=TO_DATE('2012-08-06 13:57:03','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200121 +; + +-- Aug 6, 2012 1:57:05 PM COT +ALTER TABLE AD_PasswordRule MODIFY IsActive CHAR(1) DEFAULT 'Y' +; + +-- Aug 6, 2012 1:57:05 PM COT +UPDATE AD_PasswordRule SET IsActive='Y' WHERE IsActive IS NULL +; + +-- Aug 6, 2012 1:57:05 PM COT +ALTER TABLE AD_PasswordRule MODIFY IsActive NOT NULL +; + +-- Aug 6, 2012 1:57:11 PM COT +ALTER TABLE AD_PasswordRule MODIFY IsDictMatchBackwards CHAR(1) DEFAULT 'N' +; + +-- Aug 6, 2012 1:57:11 PM COT +UPDATE AD_PasswordRule SET IsDictMatchBackwards='N' WHERE IsDictMatchBackwards IS NULL +; + +-- Aug 6, 2012 1:57:17 PM COT +ALTER TABLE AD_PasswordRule MODIFY IsUserNameRule CHAR(1) DEFAULT 'N' +; + +-- Aug 6, 2012 1:57:17 PM COT +UPDATE AD_PasswordRule SET IsUserNameRule='N' WHERE IsUserNameRule IS NULL +; + +-- Aug 6, 2012 1:57:22 PM COT +ALTER TABLE AD_PasswordRule MODIFY IsUsingDictionary CHAR(1) DEFAULT 'N' +; + +-- Aug 6, 2012 1:57:22 PM COT +UPDATE AD_PasswordRule SET IsUsingDictionary='N' WHERE IsUsingDictionary IS NULL +; + +-- Aug 6, 2012 1:57:28 PM COT +ALTER TABLE AD_PasswordRule MODIFY IsWhitespace CHAR(1) DEFAULT 'N' +; + +-- Aug 6, 2012 1:57:28 PM COT +UPDATE AD_PasswordRule SET IsWhitespace='N' WHERE IsWhitespace IS NULL +; + +-- Aug 6, 2012 2:31:39 PM COT +UPDATE AD_Field SET SeqNo=110,IsDisplayed='Y' WHERE AD_Field_ID=200251 +; + +-- Aug 6, 2012 2:31:39 PM COT +UPDATE AD_Field SET SeqNo=120,IsDisplayed='Y' WHERE AD_Field_ID=200086 +; + +-- Aug 6, 2012 2:31:39 PM COT +UPDATE AD_Field SET SeqNo=130,IsDisplayed='Y' WHERE AD_Field_ID=200089 +; + +-- Aug 6, 2012 2:31:39 PM COT +UPDATE AD_Field SET SeqNo=140,IsDisplayed='Y' WHERE AD_Field_ID=200255 +; + +-- Aug 6, 2012 2:31:39 PM COT +UPDATE AD_Field SET SeqNo=150,IsDisplayed='Y' WHERE AD_Field_ID=200090 +; + +-- Aug 6, 2012 2:31:39 PM COT +UPDATE AD_Field SET SeqNo=160,IsDisplayed='Y' WHERE AD_Field_ID=200094 +; + +-- Aug 6, 2012 2:31:39 PM COT +UPDATE AD_Field SET SeqNo=170,IsDisplayed='Y' WHERE AD_Field_ID=200093 +; + +-- Aug 6, 2012 2:31:39 PM COT +UPDATE AD_Field SET SeqNo=180,IsDisplayed='Y' WHERE AD_Field_ID=200079 +; + +-- Aug 6, 2012 2:31:39 PM COT +UPDATE AD_Field SET SeqNo=190,IsDisplayed='Y' WHERE AD_Field_ID=200254 +; + +-- Aug 6, 2012 2:31:40 PM COT +UPDATE AD_Field SET SeqNo=200,IsDisplayed='Y' WHERE AD_Field_ID=200080 +; + +-- Aug 6, 2012 2:31:40 PM COT +UPDATE AD_Field SET SeqNo=210,IsDisplayed='Y' WHERE AD_Field_ID=200074 +; + +-- Aug 6, 2012 2:31:57 PM COT +UPDATE AD_Field SET IsSameLine='Y',Updated=TO_DATE('2012-08-06 14:31:57','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200255 +; + +-- Aug 6, 2012 3:57:31 PM COT +UPDATE AD_Element SET ColumnName='IsWhitespace', Description='Whitespace validation',Updated=TO_DATE('2012-08-06 15:57:31','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=200030 +; + +-- Aug 6, 2012 3:57:31 PM COT +UPDATE AD_Element_Trl SET IsTranslated='N' WHERE AD_Element_ID=200030 +; + +-- Aug 6, 2012 3:57:31 PM COT +UPDATE AD_Column SET ColumnName='IsWhitespace', Name='Whitespace', Description='Whitespace validation', Help=NULL WHERE AD_Element_ID=200030 +; + +-- Aug 6, 2012 3:57:31 PM COT +UPDATE AD_Process_Para SET ColumnName='IsWhitespace', Name='Whitespace', Description='Whitespace validation', Help=NULL, AD_Element_ID=200030 WHERE UPPER(ColumnName)='ISWHITESPACE' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL +; + +-- Aug 6, 2012 3:57:31 PM COT +UPDATE AD_Process_Para SET ColumnName='IsWhitespace', Name='Whitespace', Description='Whitespace validation', Help=NULL WHERE AD_Element_ID=200030 AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 3:57:31 PM COT +UPDATE AD_Field SET Name='Whitespace', Description='Whitespace validation', Help=NULL WHERE AD_Column_ID IN (SELECT AD_Column_ID FROM AD_Column WHERE AD_Element_ID=200030) AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 5:03:43 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 ('E','Password Errors',200011,'D','9a29cf03-6807-43c4-aa53-982d2aa63dfc','PasswordErrors','Y',TO_DATE('2012-08-06 17:03:42','YYYY-MM-DD HH24:MI:SS'),100,100,0,0,TO_DATE('2012-08-06 17:03:42','YYYY-MM-DD HH24:MI:SS')) +; + +-- Aug 6, 2012 5:03:43 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,AD_Message_Trl_UU ) 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,Generate_UUID() FROM AD_Language l, AD_Message t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Message_ID=200011 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) +; + +-- Aug 6, 2012 8:32:30 PM COT +UPDATE AD_Field SET DisplayLogic='@IsUsingDictionary@=Y',Updated=TO_DATE('2012-08-06 20:32:30','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200254 +; + +-- Aug 6, 2012 8:32:38 PM COT +UPDATE AD_Field SET DisplayLogic='@IsUsingDictionary@=Y',Updated=TO_DATE('2012-08-06 20:32:38','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200079 +; + +-- Aug 6, 2012 8:32:42 PM COT +UPDATE AD_Field SET DisplayLogic='@IsUsingDictionary@=Y',Updated=TO_DATE('2012-08-06 20:32:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200080 +; + +UPDATE AD_System + SET LastMigrationScriptApplied='865_IDEMPIERE-221.sql' +WHERE LastMigrationScriptApplied<'865_IDEMPIERE-221.sql' + OR LastMigrationScriptApplied IS NULL +; + diff --git a/migration/360lts-release/postgresql/865_IDEMPIERE-221.sql b/migration/360lts-release/postgresql/865_IDEMPIERE-221.sql new file mode 100644 index 0000000000..e624703033 --- /dev/null +++ b/migration/360lts-release/postgresql/865_IDEMPIERE-221.sql @@ -0,0 +1,594 @@ +-- Aug 6, 2012 12:39:27 PM COT +-- IDEMPIERE-221 Implement password policies +UPDATE AD_Table SET AD_Window_ID=200002,Updated=TO_TIMESTAMP('2012-08-06 12:39:27','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Table_ID=200005 +; + +-- Aug 6, 2012 12:44:29 PM COT +UPDATE AD_Field SET SeqNo=40,IsDisplayed='Y' WHERE AD_Field_ID=200252 +; + +-- Aug 6, 2012 12:44:29 PM COT +UPDATE AD_Field SET SeqNo=60,IsDisplayed='Y' WHERE AD_Field_ID=200076 +; + +-- Aug 6, 2012 12:44:29 PM COT +UPDATE AD_Field SET SeqNo=70,IsDisplayed='Y' WHERE AD_Field_ID=200081 +; + +-- Aug 6, 2012 12:44:29 PM COT +UPDATE AD_Field SET SeqNo=80,IsDisplayed='Y' WHERE AD_Field_ID=200256 +; + +-- Aug 6, 2012 12:44:29 PM COT +UPDATE AD_Field SET SeqNo=120,IsDisplayed='Y' WHERE AD_Field_ID=200086 +; + +-- Aug 6, 2012 12:44:29 PM COT +UPDATE AD_Field SET SeqNo=130,IsDisplayed='Y' WHERE AD_Field_ID=200089 +; + +-- Aug 6, 2012 12:44:29 PM COT +UPDATE AD_Field SET SeqNo=140,IsDisplayed='Y' WHERE AD_Field_ID=200094 +; + +-- Aug 6, 2012 12:44:29 PM COT +UPDATE AD_Field SET SeqNo=150,IsDisplayed='Y' WHERE AD_Field_ID=200093 +; + +-- Aug 6, 2012 12:44:29 PM COT +UPDATE AD_Field SET SeqNo=160,IsDisplayed='Y' WHERE AD_Field_ID=200254 +; + +-- Aug 6, 2012 12:44:29 PM COT +UPDATE AD_Field SET SeqNo=170,IsDisplayed='Y' WHERE AD_Field_ID=200079 +; + +-- Aug 6, 2012 12:44:29 PM COT +UPDATE AD_Field SET SeqNo=180,IsDisplayed='Y' WHERE AD_Field_ID=200080 +; + +-- Aug 6, 2012 12:44:29 PM COT +UPDATE AD_Field SET SeqNo=190,IsDisplayed='Y' WHERE AD_Field_ID=200251 +; + +-- Aug 6, 2012 12:44:29 PM COT +UPDATE AD_Field SET SeqNo=200,IsDisplayed='Y' WHERE AD_Field_ID=200074 +; + +-- Aug 6, 2012 12:44:46 PM COT +UPDATE AD_Field SET IsSameLine='Y',Updated=TO_TIMESTAMP('2012-08-06 12:44:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200083 +; + +-- Aug 6, 2012 12:45:17 PM COT +UPDATE AD_Element SET Name='Minimum Length', PrintName='Minimum Length',Updated=TO_TIMESTAMP('2012-08-06 12:45:17','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=200065 +; + +-- Aug 6, 2012 12:45:17 PM COT +UPDATE AD_Element_Trl SET IsTranslated='N' WHERE AD_Element_ID=200065 +; + +-- Aug 6, 2012 12:45:17 PM COT +UPDATE AD_Column SET ColumnName='MinLength', Name='Minimum Length', Description=NULL, Help=NULL WHERE AD_Element_ID=200065 +; + +-- Aug 6, 2012 12:45:17 PM COT +UPDATE AD_Process_Para SET ColumnName='MinLength', Name='Minimum Length', Description=NULL, Help=NULL, AD_Element_ID=200065 WHERE UPPER(ColumnName)='MINLENGTH' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL +; + +-- Aug 6, 2012 12:45:17 PM COT +UPDATE AD_Process_Para SET ColumnName='MinLength', Name='Minimum Length', Description=NULL, Help=NULL WHERE AD_Element_ID=200065 AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 12:45:17 PM COT +UPDATE AD_Field SET Name='Minimum Length', Description=NULL, Help=NULL WHERE AD_Column_ID IN (SELECT AD_Column_ID FROM AD_Column WHERE AD_Element_ID=200065) AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 12:45:17 PM COT +UPDATE AD_PrintFormatItem SET PrintName='Minimum Length', Name='Minimum Length' WHERE IsCentrallyMaintained='Y' AND EXISTS (SELECT * FROM AD_Column c WHERE c.AD_Column_ID=AD_PrintFormatItem.AD_Column_ID AND c.AD_Element_ID=200065) +; + +-- Aug 6, 2012 12:45:54 PM COT +UPDATE AD_Field SET IsSameLine='Y',Updated=TO_TIMESTAMP('2012-08-06 12:45:54','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200081 +; + +-- Aug 6, 2012 12:45:58 PM COT +UPDATE AD_Field SET IsSameLine='Y',Updated=TO_TIMESTAMP('2012-08-06 12:45:58','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200082 +; + +-- Aug 6, 2012 12:46:09 PM COT +UPDATE AD_Field SET IsSameLine='Y',Updated=TO_TIMESTAMP('2012-08-06 12:46:09','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200089 +; + +-- Aug 6, 2012 12:46:45 PM COT +UPDATE AD_Element SET Name='Whitespace', PrintName='Whitespace',Updated=TO_TIMESTAMP('2012-08-06 12:46:45','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=200030 +; + +-- Aug 6, 2012 12:46:45 PM COT +UPDATE AD_Element_Trl SET IsTranslated='N' WHERE AD_Element_ID=200030 +; + +-- Aug 6, 2012 12:46:45 PM COT +UPDATE AD_Column SET ColumnName='whitespace', Name='Whitespace', Description=NULL, Help=NULL WHERE AD_Element_ID=200030 +; + +-- Aug 6, 2012 12:46:45 PM COT +UPDATE AD_Process_Para SET ColumnName='whitespace', Name='Whitespace', Description=NULL, Help=NULL, AD_Element_ID=200030 WHERE UPPER(ColumnName)='WHITESPACE' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL +; + +-- Aug 6, 2012 12:46:45 PM COT +UPDATE AD_Process_Para SET ColumnName='whitespace', Name='Whitespace', Description=NULL, Help=NULL WHERE AD_Element_ID=200030 AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 12:46:45 PM COT +UPDATE AD_Field SET Name='Whitespace', Description=NULL, Help=NULL WHERE AD_Column_ID IN (SELECT AD_Column_ID FROM AD_Column WHERE AD_Element_ID=200030) AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 12:46:45 PM COT +UPDATE AD_PrintFormatItem SET PrintName='Whitespace', Name='Whitespace' WHERE IsCentrallyMaintained='Y' AND EXISTS (SELECT * FROM AD_Column c WHERE c.AD_Column_ID=AD_PrintFormatItem.AD_Column_ID AND c.AD_Element_ID=200030) +; + +-- Aug 6, 2012 12:47:20 PM COT +UPDATE AD_Field SET SeqNo=120,IsDisplayed='Y' WHERE AD_Field_ID=200251 +; + +-- Aug 6, 2012 12:47:20 PM COT +UPDATE AD_Field SET SeqNo=130,IsDisplayed='Y' WHERE AD_Field_ID=200086 +; + +-- Aug 6, 2012 12:47:20 PM COT +UPDATE AD_Field SET SeqNo=140,IsDisplayed='Y' WHERE AD_Field_ID=200089 +; + +-- Aug 6, 2012 12:47:20 PM COT +UPDATE AD_Field SET SeqNo=150,IsDisplayed='Y' WHERE AD_Field_ID=200094 +; + +-- Aug 6, 2012 12:47:20 PM COT +UPDATE AD_Field SET SeqNo=160,IsDisplayed='Y' WHERE AD_Field_ID=200093 +; + +-- Aug 6, 2012 12:47:20 PM COT +UPDATE AD_Field SET SeqNo=170,IsDisplayed='Y' WHERE AD_Field_ID=200254 +; + +-- Aug 6, 2012 12:47:20 PM COT +UPDATE AD_Field SET SeqNo=180,IsDisplayed='Y' WHERE AD_Field_ID=200079 +; + +-- Aug 6, 2012 12:47:20 PM COT +UPDATE AD_Field SET SeqNo=190,IsDisplayed='Y' WHERE AD_Field_ID=200080 +; + +-- Aug 6, 2012 12:47:31 PM COT +UPDATE AD_Field SET IsSameLine='Y',Updated=TO_TIMESTAMP('2012-08-06 12:47:31','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200086 +; + +-- Aug 6, 2012 12:47:35 PM COT +UPDATE AD_Field SET IsSameLine='N',Updated=TO_TIMESTAMP('2012-08-06 12:47:35','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200089 +; + +-- Aug 6, 2012 12:47:39 PM COT +UPDATE AD_Field SET IsSameLine='Y',Updated=TO_TIMESTAMP('2012-08-06 12:47:39','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200094 +; + +-- Aug 6, 2012 12:47:56 PM COT +UPDATE AD_Field SET SeqNo=170,IsDisplayed='Y' WHERE AD_Field_ID=200079 +; + +-- Aug 6, 2012 12:47:56 PM COT +UPDATE AD_Field SET SeqNo=180,IsDisplayed='Y' WHERE AD_Field_ID=200254 +; + +-- Aug 6, 2012 12:48:02 PM COT +UPDATE AD_Field SET IsSameLine='Y',Updated=TO_TIMESTAMP('2012-08-06 12:48:02','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200079 +; + +-- Aug 6, 2012 1:25:02 PM COT +UPDATE AD_Column SET FieldLength=10, AD_Reference_ID=11,Updated=TO_TIMESTAMP('2012-08-06 13:25:02','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200236 +; + +-- Aug 6, 2012 1:25:19 PM COT +UPDATE AD_Element SET Description='Lenght of required alphabetical sequence',Updated=TO_TIMESTAMP('2012-08-06 13:25:19','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=200068 +; + +-- Aug 6, 2012 1:25:19 PM COT +UPDATE AD_Element_Trl SET IsTranslated='N' WHERE AD_Element_ID=200068 +; + +-- Aug 6, 2012 1:25:19 PM COT +UPDATE AD_Column SET ColumnName='AlphabeticalSequence', Name='Alphabetical Sequence', Description='Lenght of required alphabetical sequence', Help=NULL WHERE AD_Element_ID=200068 +; + +-- Aug 6, 2012 1:25:19 PM COT +UPDATE AD_Process_Para SET ColumnName='AlphabeticalSequence', Name='Alphabetical Sequence', Description='Lenght of required alphabetical sequence', Help=NULL, AD_Element_ID=200068 WHERE UPPER(ColumnName)='ALPHABETICALSEQUENCE' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL +; + +-- Aug 6, 2012 1:25:19 PM COT +UPDATE AD_Process_Para SET ColumnName='AlphabeticalSequence', Name='Alphabetical Sequence', Description='Lenght of required alphabetical sequence', Help=NULL WHERE AD_Element_ID=200068 AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 1:25:19 PM COT +UPDATE AD_Field SET Name='Alphabetical Sequence', Description='Lenght of required alphabetical sequence', Help=NULL WHERE AD_Column_ID IN (SELECT AD_Column_ID FROM AD_Column WHERE AD_Element_ID=200068) AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 1:25:31 PM COT +ALTER TABLE ad_passwordrule DROP COLUMN alphabeticalsequence +; + +-- Aug 6, 2012 1:27:54 PM COT +ALTER TABLE AD_PasswordRule ADD COLUMN AlphabeticalSequence NUMERIC(10) DEFAULT NULL +; + +-- Aug 6, 2012 1:28:58 PM COT +UPDATE AD_Column SET FieldLength=10, AD_Reference_ID=11,Updated=TO_TIMESTAMP('2012-08-06 13:28:58','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200131 +; + +ALTER TABLE ad_passwordrule DROP COLUMN QWERTYSequence +; + +-- Aug 6, 2012 1:29:01 PM COT +ALTER TABLE AD_PasswordRule ADD COLUMN QWERTYSequence NUMERIC(10) DEFAULT NULL +; + +-- Aug 6, 2012 1:29:26 PM COT +UPDATE AD_Element SET Description='Lenght of QWERTY sequences to validate',Updated=TO_TIMESTAMP('2012-08-06 13:29:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=200029 +; + +-- Aug 6, 2012 1:29:26 PM COT +UPDATE AD_Element_Trl SET IsTranslated='N' WHERE AD_Element_ID=200029 +; + +-- Aug 6, 2012 1:29:26 PM COT +UPDATE AD_Column SET ColumnName='QWERTYSequence', Name='QWERTY Sequence', Description='Lenght of QWERTY sequences to validate', Help=NULL WHERE AD_Element_ID=200029 +; + +-- Aug 6, 2012 1:29:26 PM COT +UPDATE AD_Process_Para SET ColumnName='QWERTYSequence', Name='QWERTY Sequence', Description='Lenght of QWERTY sequences to validate', Help=NULL, AD_Element_ID=200029 WHERE UPPER(ColumnName)='QWERTYSEQUENCE' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL +; + +-- Aug 6, 2012 1:29:26 PM COT +UPDATE AD_Process_Para SET ColumnName='QWERTYSequence', Name='QWERTY Sequence', Description='Lenght of QWERTY sequences to validate', Help=NULL WHERE AD_Element_ID=200029 AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 1:29:26 PM COT +UPDATE AD_Field SET Name='QWERTY Sequence', Description='Lenght of QWERTY sequences to validate', Help=NULL WHERE AD_Column_ID IN (SELECT AD_Column_ID FROM AD_Column WHERE AD_Element_ID=200029) AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 1:29:52 PM COT +UPDATE AD_Element SET Description='Lenght of alphabetical sequence to validate',Updated=TO_TIMESTAMP('2012-08-06 13:29:52','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=200068 +; + +-- Aug 6, 2012 1:29:52 PM COT +UPDATE AD_Element_Trl SET IsTranslated='N' WHERE AD_Element_ID=200068 +; + +-- Aug 6, 2012 1:29:52 PM COT +UPDATE AD_Column SET ColumnName='AlphabeticalSequence', Name='Alphabetical Sequence', Description='Lenght of alphabetical sequence to validate', Help=NULL WHERE AD_Element_ID=200068 +; + +-- Aug 6, 2012 1:29:52 PM COT +UPDATE AD_Process_Para SET ColumnName='AlphabeticalSequence', Name='Alphabetical Sequence', Description='Lenght of alphabetical sequence to validate', Help=NULL, AD_Element_ID=200068 WHERE UPPER(ColumnName)='ALPHABETICALSEQUENCE' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL +; + +-- Aug 6, 2012 1:29:52 PM COT +UPDATE AD_Process_Para SET ColumnName='AlphabeticalSequence', Name='Alphabetical Sequence', Description='Lenght of alphabetical sequence to validate', Help=NULL WHERE AD_Element_ID=200068 AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 1:29:52 PM COT +UPDATE AD_Field SET Name='Alphabetical Sequence', Description='Lenght of alphabetical sequence to validate', Help=NULL WHERE AD_Column_ID IN (SELECT AD_Column_ID FROM AD_Column WHERE AD_Element_ID=200068) AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 1:30:38 PM COT +UPDATE AD_Element SET Description='Length of numerical sequence to validate',Updated=TO_TIMESTAMP('2012-08-06 13:30:38','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=200028 +; + +-- Aug 6, 2012 1:30:38 PM COT +UPDATE AD_Element_Trl SET IsTranslated='N' WHERE AD_Element_ID=200028 +; + +-- Aug 6, 2012 1:30:38 PM COT +UPDATE AD_Column SET ColumnName='NumericalSequence', Name='Numerical Sequence', Description='Length of numerical sequence to validate', Help=NULL WHERE AD_Element_ID=200028 +; + +-- Aug 6, 2012 1:30:38 PM COT +UPDATE AD_Process_Para SET ColumnName='NumericalSequence', Name='Numerical Sequence', Description='Length of numerical sequence to validate', Help=NULL, AD_Element_ID=200028 WHERE UPPER(ColumnName)='NUMERICALSEQUENCE' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL +; + +-- Aug 6, 2012 1:30:38 PM COT +UPDATE AD_Process_Para SET ColumnName='NumericalSequence', Name='Numerical Sequence', Description='Length of numerical sequence to validate', Help=NULL WHERE AD_Element_ID=200028 AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 1:30:38 PM COT +UPDATE AD_Field SET Name='Numerical Sequence', Description='Length of numerical sequence to validate', Help=NULL WHERE AD_Column_ID IN (SELECT AD_Column_ID FROM AD_Column WHERE AD_Element_ID=200028) AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 1:31:18 PM COT +UPDATE AD_Element SET Description='Require at least # alphabetical in passwords',Updated=TO_TIMESTAMP('2012-08-06 13:31:18','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=200027 +; + +-- Aug 6, 2012 1:31:18 PM COT +UPDATE AD_Element_Trl SET IsTranslated='N' WHERE AD_Element_ID=200027 +; + +-- Aug 6, 2012 1:31:18 PM COT +UPDATE AD_Column SET ColumnName='AlphabeticalCharacter', Name='Alphabetical Character', Description='Require at least # alphabetical in passwords', Help=NULL WHERE AD_Element_ID=200027 +; + +-- Aug 6, 2012 1:31:18 PM COT +UPDATE AD_Process_Para SET ColumnName='AlphabeticalCharacter', Name='Alphabetical Character', Description='Require at least # alphabetical in passwords', Help=NULL, AD_Element_ID=200027 WHERE UPPER(ColumnName)='ALPHABETICALCHARACTER' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL +; + +-- Aug 6, 2012 1:31:18 PM COT +UPDATE AD_Process_Para SET ColumnName='AlphabeticalCharacter', Name='Alphabetical Character', Description='Require at least # alphabetical in passwords', Help=NULL WHERE AD_Element_ID=200027 AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 1:31:18 PM COT +UPDATE AD_Field SET Name='Alphabetical Character', Description='Require at least # alphabetical in passwords', Help=NULL WHERE AD_Column_ID IN (SELECT AD_Column_ID FROM AD_Column WHERE AD_Element_ID=200027) AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 1:32:21 PM COT +UPDATE AD_Element SET Description='Length of repeated characters to validate',Updated=TO_TIMESTAMP('2012-08-06 13:32:21','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=200069 +; + +-- Aug 6, 2012 1:32:21 PM COT +UPDATE AD_Element_Trl SET IsTranslated='N' WHERE AD_Element_ID=200069 +; + +-- Aug 6, 2012 1:32:21 PM COT +UPDATE AD_Column SET ColumnName='RepeatCharacterRegex', Name='Repeat Character Regex', Description='Length of repeated characters to validate', Help=NULL WHERE AD_Element_ID=200069 +; + +-- Aug 6, 2012 1:32:21 PM COT +UPDATE AD_Process_Para SET ColumnName='RepeatCharacterRegex', Name='Repeat Character Regex', Description='Length of repeated characters to validate', Help=NULL, AD_Element_ID=200069 WHERE UPPER(ColumnName)='REPEATCHARACTERREGEX' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL +; + +-- Aug 6, 2012 1:32:21 PM COT +UPDATE AD_Process_Para SET ColumnName='RepeatCharacterRegex', Name='Repeat Character Regex', Description='Length of repeated characters to validate', Help=NULL WHERE AD_Element_ID=200069 AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 1:32:21 PM COT +UPDATE AD_Field SET Name='Repeat Character Regex', Description='Length of repeated characters to validate', Help=NULL WHERE AD_Column_ID IN (SELECT AD_Column_ID FROM AD_Column WHERE AD_Element_ID=200069) AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 1:34:52 PM COT +UPDATE AD_Element SET ColumnName='IsDictMatchBackwards',Updated=TO_TIMESTAMP('2012-08-06 13:34:52','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=200033 +; + +-- Aug 6, 2012 1:34:52 PM COT +UPDATE AD_Column SET ColumnName='IsDictMatchBackwards', Name='Match Backwards of Dictionary', Description='Match dictionary words backwards', Help=NULL WHERE AD_Element_ID=200033 +; + +-- Aug 6, 2012 1:34:52 PM COT +UPDATE AD_Process_Para SET ColumnName='IsDictMatchBackwards', Name='Match Backwards of Dictionary', Description='Match dictionary words backwards', Help=NULL, AD_Element_ID=200033 WHERE UPPER(ColumnName)='ISDICTMATCHBACKWARDS' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL +; + +-- Aug 6, 2012 1:34:52 PM COT +UPDATE AD_Process_Para SET ColumnName='IsDictMatchBackwards', Name='Match Backwards of Dictionary', Description='Match dictionary words backwards', Help=NULL WHERE AD_Element_ID=200033 AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 1:35:09 PM COT +UPDATE AD_Column SET IsMandatory='Y', DefaultValue='N',Updated=TO_TIMESTAMP('2012-08-06 13:35:09','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200138 +; + +-- Aug 6, 2012 1:35:12 PM COT +ALTER TABLE ad_passwordrule RENAME DictMatchBackwards TO IsDictMatchBackwards +; + +-- Aug 6, 2012 1:35:32 PM COT +UPDATE AD_Column SET IsMandatory='Y', DefaultValue='N',Updated=TO_TIMESTAMP('2012-08-06 13:35:32','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200133 +; + +-- Aug 6, 2012 1:35:33 PM COT +ALTER TABLE ad_passwordrule RENAME whitespace TO iswhitespace +; + +-- Aug 6, 2012 1:36:48 PM COT +DELETE FROM AD_Column_Trl WHERE AD_Column_ID=200240 +; + +-- Aug 6, 2012 1:36:48 PM COT +DELETE FROM AD_Column WHERE AD_Column_ID=200240 +; + +-- Aug 6, 2012 2:16:41 PM COT +INSERT INTO AD_Element (ColumnName,AD_Element_ID,EntityType,Name,Description,PrintName,AD_Element_UU,AD_Client_ID,Created,Updated,AD_Org_ID,CreatedBy,UpdatedBy,IsActive) VALUES ('IsUserNameRule',200072,'D','User Name Rule','Validate the password doesn''t contain user name (ignore case and match backwards)','User Name Rule','9eda063a-90bd-442f-95ed-89804cf6497a',0,TO_TIMESTAMP('2012-08-06 14:16:40','YYYY-MM-DD HH24:MI:SS'),TO_TIMESTAMP('2012-08-06 14:16:40','YYYY-MM-DD HH24:MI:SS'),0,100,100,'Y') +; + +-- Aug 6, 2012 2:16:41 PM COT +INSERT INTO AD_Element_Trl (AD_Language,AD_Element_ID, Help,PO_Description,PO_Help,Name,Description,PrintName,PO_Name,PO_PrintName, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Element_Trl_UU ) SELECT l.AD_Language,t.AD_Element_ID, t.Help,t.PO_Description,t.PO_Help,t.Name,t.Description,t.PrintName,t.PO_Name,t.PO_PrintName, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Element t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Element_ID=200072 AND NOT EXISTS (SELECT * FROM AD_Element_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Element_ID=t.AD_Element_ID) +; + +-- Aug 6, 2012 1:37:02 PM COT +UPDATE AD_Column SET IsMandatory='Y', AD_Element_ID=200072, ColumnName='IsUserNameRule', Description='Validate the password doesn''t contain user name (ignore case and match backwards)', DefaultValue='N', Help=NULL, Name='User Name Rule',Updated=TO_TIMESTAMP('2012-08-06 13:37:02','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200134 +; + +-- Aug 6, 2012 1:37:02 PM COT +UPDATE AD_Column_Trl SET IsTranslated='N' WHERE AD_Column_ID=200134 +; + +-- Aug 6, 2012 1:37:02 PM COT +UPDATE AD_Field SET Name='User Name Rule', Description='Validate the password doesn''t contain user name (ignore case and match backwards)', Help=NULL WHERE AD_Column_ID=200134 AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 1:37:03 PM COT +ALTER TABLE ad_passwordrule RENAME username TO IsUserNameRule +; + +-- Aug 6, 2012 1:37:03 PM COT +UPDATE AD_PasswordRule SET IsUserNameRule='N' WHERE IsUserNameRule IS NULL +; + +-- Aug 6, 2012 1:37:10 PM COT +UPDATE AD_Field SET SeqNo=210,IsDisplayed='Y' WHERE AD_Field_ID=200090 +; + +-- Aug 6, 2012 1:37:57 PM COT +UPDATE AD_Element SET ColumnName='IsUsingDictionary',Updated=TO_TIMESTAMP('2012-08-06 13:37:57','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=200031 +; + +-- Aug 6, 2012 1:37:57 PM COT +UPDATE AD_Column SET ColumnName='IsUsingDictionary', Name='Using Dictionary', Description=NULL, Help=NULL WHERE AD_Element_ID=200031 +; + +-- Aug 6, 2012 1:37:57 PM COT +UPDATE AD_Process_Para SET ColumnName='IsUsingDictionary', Name='Using Dictionary', Description=NULL, Help=NULL, AD_Element_ID=200031 WHERE UPPER(ColumnName)='ISUSINGDICTIONARY' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL +; + +-- Aug 6, 2012 1:37:57 PM COT +UPDATE AD_Process_Para SET ColumnName='IsUsingDictionary', Name='Using Dictionary', Description=NULL, Help=NULL WHERE AD_Element_ID=200031 AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 1:38:17 PM COT +UPDATE AD_Column SET IsMandatory='Y', DefaultValue='N',Updated=TO_TIMESTAMP('2012-08-06 13:38:17','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200135 +; + +-- Aug 6, 2012 1:38:18 PM COT +ALTER TABLE ad_passwordrule RENAME UsingDictionary TO IsUsingDictionary +; + +-- Aug 6, 2012 1:57:03 PM COT +UPDATE AD_Column SET IsMandatory='Y', DefaultValue='Y', IsAllowCopy='N',Updated=TO_TIMESTAMP('2012-08-06 13:57:03','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200121 +; + +-- Aug 6, 2012 1:57:05 PM COT +INSERT INTO t_alter_column values('ad_passwordrule','IsActive','CHAR(1)',null,'Y') +; + +-- Aug 6, 2012 1:57:05 PM COT +UPDATE AD_PasswordRule SET IsActive='Y' WHERE IsActive IS NULL +; + +-- Aug 6, 2012 1:57:05 PM COT +INSERT INTO t_alter_column values('ad_passwordrule','IsActive',null,'NOT NULL',null) +; + +-- Aug 6, 2012 1:57:11 PM COT +INSERT INTO t_alter_column values('ad_passwordrule','IsDictMatchBackwards','CHAR(1)',null,'N') +; + +-- Aug 6, 2012 1:57:11 PM COT +UPDATE AD_PasswordRule SET IsDictMatchBackwards='N' WHERE IsDictMatchBackwards IS NULL +; + +-- Aug 6, 2012 1:57:17 PM COT +INSERT INTO t_alter_column values('ad_passwordrule','IsUserNameRule','CHAR(1)',null,'N') +; + +-- Aug 6, 2012 1:57:17 PM COT +UPDATE AD_PasswordRule SET IsUserNameRule='N' WHERE IsUserNameRule IS NULL +; + +-- Aug 6, 2012 1:57:22 PM COT +INSERT INTO t_alter_column values('ad_passwordrule','IsUsingDictionary','CHAR(1)',null,'N') +; + +-- Aug 6, 2012 1:57:22 PM COT +UPDATE AD_PasswordRule SET IsUsingDictionary='N' WHERE IsUsingDictionary IS NULL +; + +-- Aug 6, 2012 1:57:28 PM COT +INSERT INTO t_alter_column values('ad_passwordrule','IsWhitespace','CHAR(1)',null,'N') +; + +-- Aug 6, 2012 1:57:28 PM COT +UPDATE AD_PasswordRule SET IsWhitespace='N' WHERE IsWhitespace IS NULL +; + +-- Aug 6, 2012 2:31:39 PM COT +UPDATE AD_Field SET SeqNo=110,IsDisplayed='Y' WHERE AD_Field_ID=200251 +; + +-- Aug 6, 2012 2:31:39 PM COT +UPDATE AD_Field SET SeqNo=120,IsDisplayed='Y' WHERE AD_Field_ID=200086 +; + +-- Aug 6, 2012 2:31:39 PM COT +UPDATE AD_Field SET SeqNo=130,IsDisplayed='Y' WHERE AD_Field_ID=200089 +; + +-- Aug 6, 2012 2:31:39 PM COT +UPDATE AD_Field SET SeqNo=140,IsDisplayed='Y' WHERE AD_Field_ID=200255 +; + +-- Aug 6, 2012 2:31:39 PM COT +UPDATE AD_Field SET SeqNo=150,IsDisplayed='Y' WHERE AD_Field_ID=200090 +; + +-- Aug 6, 2012 2:31:39 PM COT +UPDATE AD_Field SET SeqNo=160,IsDisplayed='Y' WHERE AD_Field_ID=200094 +; + +-- Aug 6, 2012 2:31:39 PM COT +UPDATE AD_Field SET SeqNo=170,IsDisplayed='Y' WHERE AD_Field_ID=200093 +; + +-- Aug 6, 2012 2:31:39 PM COT +UPDATE AD_Field SET SeqNo=180,IsDisplayed='Y' WHERE AD_Field_ID=200079 +; + +-- Aug 6, 2012 2:31:39 PM COT +UPDATE AD_Field SET SeqNo=190,IsDisplayed='Y' WHERE AD_Field_ID=200254 +; + +-- Aug 6, 2012 2:31:40 PM COT +UPDATE AD_Field SET SeqNo=200,IsDisplayed='Y' WHERE AD_Field_ID=200080 +; + +-- Aug 6, 2012 2:31:40 PM COT +UPDATE AD_Field SET SeqNo=210,IsDisplayed='Y' WHERE AD_Field_ID=200074 +; + +-- Aug 6, 2012 2:31:57 PM COT +UPDATE AD_Field SET IsSameLine='Y',Updated=TO_TIMESTAMP('2012-08-06 14:31:57','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200255 +; + +-- Aug 6, 2012 3:57:31 PM COT +UPDATE AD_Element SET ColumnName='IsWhitespace', Description='Whitespace validation',Updated=TO_TIMESTAMP('2012-08-06 15:57:31','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Element_ID=200030 +; + +-- Aug 6, 2012 3:57:31 PM COT +UPDATE AD_Element_Trl SET IsTranslated='N' WHERE AD_Element_ID=200030 +; + +-- Aug 6, 2012 3:57:31 PM COT +UPDATE AD_Column SET ColumnName='IsWhitespace', Name='Whitespace', Description='Whitespace validation', Help=NULL WHERE AD_Element_ID=200030 +; + +-- Aug 6, 2012 3:57:31 PM COT +UPDATE AD_Process_Para SET ColumnName='IsWhitespace', Name='Whitespace', Description='Whitespace validation', Help=NULL, AD_Element_ID=200030 WHERE UPPER(ColumnName)='ISWHITESPACE' AND IsCentrallyMaintained='Y' AND AD_Element_ID IS NULL +; + +-- Aug 6, 2012 3:57:31 PM COT +UPDATE AD_Process_Para SET ColumnName='IsWhitespace', Name='Whitespace', Description='Whitespace validation', Help=NULL WHERE AD_Element_ID=200030 AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 3:57:31 PM COT +UPDATE AD_Field SET Name='Whitespace', Description='Whitespace validation', Help=NULL WHERE AD_Column_ID IN (SELECT AD_Column_ID FROM AD_Column WHERE AD_Element_ID=200030) AND IsCentrallyMaintained='Y' +; + +-- Aug 6, 2012 5:03:43 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 ('E','Password Errors',200011,'D','9a29cf03-6807-43c4-aa53-982d2aa63dfc','PasswordErrors','Y',TO_TIMESTAMP('2012-08-06 17:03:42','YYYY-MM-DD HH24:MI:SS'),100,100,0,0,TO_TIMESTAMP('2012-08-06 17:03:42','YYYY-MM-DD HH24:MI:SS')) +; + +-- Aug 6, 2012 5:03:43 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,AD_Message_Trl_UU ) 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,Generate_UUID() FROM AD_Language l, AD_Message t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Message_ID=200011 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) +; + +-- Aug 6, 2012 8:32:30 PM COT +UPDATE AD_Field SET DisplayLogic='@IsUsingDictionary@=Y',Updated=TO_TIMESTAMP('2012-08-06 20:32:30','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200254 +; + +-- Aug 6, 2012 8:32:38 PM COT +UPDATE AD_Field SET DisplayLogic='@IsUsingDictionary@=Y',Updated=TO_TIMESTAMP('2012-08-06 20:32:38','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200079 +; + +-- Aug 6, 2012 8:32:42 PM COT +UPDATE AD_Field SET DisplayLogic='@IsUsingDictionary@=Y',Updated=TO_TIMESTAMP('2012-08-06 20:32:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200080 +; + +UPDATE AD_System + SET LastMigrationScriptApplied='865_IDEMPIERE-221.sql' +WHERE LastMigrationScriptApplied<'865_IDEMPIERE-221.sql' + OR LastMigrationScriptApplied IS NULL +; + diff --git a/org.adempiere.base.process/src/org/compiere/process/UserPassword.java b/org.adempiere.base.process/src/org/compiere/process/UserPassword.java index a87ab6e23f..72e0a167fb 100644 --- a/org.adempiere.base.process/src/org/compiere/process/UserPassword.java +++ b/org.adempiere.base.process/src/org/compiere/process/UserPassword.java @@ -18,8 +18,6 @@ package org.compiere.process; import java.util.logging.Level; -import org.compiere.model.MClient; -import org.compiere.model.MPasswordRule; import org.compiere.model.MSysConfig; import org.compiere.model.MUser; import org.compiere.util.Util; @@ -82,6 +80,7 @@ public class UserPassword extends SvrProcess log.info ("AD_User_ID=" + p_AD_User_ID + " from " + getAD_User_ID()); MUser user = MUser.get(getCtx(), p_AD_User_ID); + user.load(get_TrxName()); MUser operator = MUser.get(getCtx(), getAD_User_ID()); log.fine("User=" + user + ", Operator=" + operator); @@ -112,12 +111,7 @@ public class UserPassword extends SvrProcess } else { if (!p_NewPassword.equals(p_NewPasswordConfirm)) { throw new IllegalArgumentException("@PasswordNotMatch@"); - } else { - String msg = validate(); - if (msg != null) { - throw new IllegalArgumentException(msg); - } - } + } } } @@ -132,9 +126,9 @@ public class UserPassword extends SvrProcess } if (!Util.isEmpty(p_NewPassword)) - user.setPassword(p_NewPassword); - if (!Util.isEmpty(p_NewEMail)) - user.setEMail(p_NewEMail); + user.set_ValueOfColumn("Password", p_NewPassword); // will be hashed and validate on saveEx + if (!Util.isEmpty(p_NewEMail)) + user.setEMail(p_NewEMail); if (!Util.isEmpty(p_NewEMailUser)) user.setEMailUser(p_NewEMailUser); if (!Util.isEmpty(p_NewEMailUserPW)) @@ -144,21 +138,5 @@ public class UserPassword extends SvrProcess return "OK"; } // 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 diff --git a/org.adempiere.base/.classpath b/org.adempiere.base/.classpath index 6e7e9007e5..ab16bbf32b 100644 --- a/org.adempiere.base/.classpath +++ b/org.adempiere.base/.classpath @@ -1,8 +1,20 @@ - - - + + + + + + + + + + + + + + + diff --git a/org.adempiere.base/src/org/compiere/model/I_AD_PasswordRule.java b/org.adempiere.base/src/org/compiere/model/I_AD_PasswordRule.java index 41055cd01b..f3a6f13009 100644 --- a/org.adempiere.base/src/org/compiere/model/I_AD_PasswordRule.java +++ b/org.adempiere.base/src/org/compiere/model/I_AD_PasswordRule.java @@ -65,10 +65,10 @@ public interface I_AD_PasswordRule /** Column name AD_PasswordRule_ID */ public static final String COLUMNNAME_AD_PasswordRule_ID = "AD_PasswordRule_ID"; - /** Set AD_PasswordRule */ + /** Set Password Policies */ public void setAD_PasswordRule_ID (int AD_PasswordRule_ID); - /** Get AD_PasswordRule */ + /** Get Password Policies */ public int getAD_PasswordRule_ID(); /** Column name AD_PasswordRule_UU */ @@ -83,24 +83,28 @@ public interface I_AD_PasswordRule /** Column name AlphabeticalCharacter */ public static final String COLUMNNAME_AlphabeticalCharacter = "AlphabeticalCharacter"; - /** Set Alphabetical Character */ + /** Set Alphabetical Character. + * Require at least # alphabetical in passwords + */ public void setAlphabeticalCharacter (int AlphabeticalCharacter); - /** Get Alphabetical Character */ + /** Get Alphabetical Character. + * Require at least # alphabetical in passwords + */ public int getAlphabeticalCharacter(); /** Column name AlphabeticalSequence */ public static final String COLUMNNAME_AlphabeticalSequence = "AlphabeticalSequence"; /** Set Alphabetical Sequence. - * Allow alphabetical sequences + * Lenght of alphabetical sequence to validate */ - public void setAlphabeticalSequence (boolean AlphabeticalSequence); + public void setAlphabeticalSequence (int AlphabeticalSequence); /** Get Alphabetical Sequence. - * Allow alphabetical sequences + * Lenght of alphabetical sequence to validate */ - public boolean isAlphabeticalSequence(); + public int getAlphabeticalSequence(); /** Column name Created */ public static final String COLUMNNAME_Created = "Created"; @@ -118,19 +122,6 @@ public interface I_AD_PasswordRule */ 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"; @@ -166,6 +157,50 @@ public interface I_AD_PasswordRule */ public boolean isActive(); + /** Column name IsDictMatchBackwards */ + public static final String COLUMNNAME_IsDictMatchBackwards = "IsDictMatchBackwards"; + + /** Set Match Backwards of Dictionary. + * Match dictionary words backwards + */ + public void setIsDictMatchBackwards (boolean IsDictMatchBackwards); + + /** Get Match Backwards of Dictionary. + * Match dictionary words backwards + */ + public boolean isDictMatchBackwards(); + + /** Column name IsUserNameRule */ + public static final String COLUMNNAME_IsUserNameRule = "IsUserNameRule"; + + /** Set User Name Rule. + * Validate the password doesn't contain user name (ignore case and match backwards) + */ + public void setIsUserNameRule (boolean IsUserNameRule); + + /** Get User Name Rule. + * Validate the password doesn't contain user name (ignore case and match backwards) + */ + public boolean isUserNameRule(); + + /** Column name IsUsingDictionary */ + public static final String COLUMNNAME_IsUsingDictionary = "IsUsingDictionary"; + + /** Set Using Dictionary */ + public void setIsUsingDictionary (boolean IsUsingDictionary); + + /** Get Using Dictionary */ + public boolean isUsingDictionary(); + + /** Column name IsWhitespace */ + public static final String COLUMNNAME_IsWhitespace = "IsWhitespace"; + + /** Set Whitespace */ + public void setIsWhitespace (boolean IsWhitespace); + + /** Get Whitespace */ + public boolean isWhitespace(); + /** Column name LowercaseCharacter */ public static final String COLUMNNAME_LowercaseCharacter = "LowercaseCharacter"; @@ -195,10 +230,10 @@ public interface I_AD_PasswordRule /** Column name MinLength */ public static final String COLUMNNAME_MinLength = "MinLength"; - /** Set Min Length */ + /** Set Minimum Length */ public void setMinLength (int MinLength); - /** Get Min Length */ + /** Get Minimum Length */ public int getMinLength(); /** Column name Name */ @@ -231,12 +266,12 @@ public interface I_AD_PasswordRule public static final String COLUMNNAME_NumericalSequence = "NumericalSequence"; /** Set Numerical Sequence. - * Allow numerical sequences of length # + * Length of numerical sequence to validate */ public void setNumericalSequence (int NumericalSequence); /** Get Numerical Sequence. - * Allow numerical sequences of length # + * Length of numerical sequence to validate */ public int getNumericalSequence(); @@ -253,22 +288,26 @@ public interface I_AD_PasswordRule public static final String COLUMNNAME_QWERTYSequence = "QWERTYSequence"; /** Set QWERTY Sequence. - * Allow QWERTY sequences + * Lenght of QWERTY sequences to validate */ - public void setQWERTYSequence (boolean QWERTYSequence); + public void setQWERTYSequence (int QWERTYSequence); /** Get QWERTY Sequence. - * Allow QWERTY sequences + * Lenght of QWERTY sequences to validate */ - public boolean isQWERTYSequence(); + public int getQWERTYSequence(); /** Column name RepeatCharacterRegex */ public static final String COLUMNNAME_RepeatCharacterRegex = "RepeatCharacterRegex"; - /** Set Repeat Character Regex */ + /** Set Repeat Character Regex. + * Length of repeated characters to validate + */ public void setRepeatCharacterRegex (int RepeatCharacterRegex); - /** Get Repeat Character Regex */ + /** Get Repeat Character Regex. + * Length of repeated characters to validate + */ public int getRepeatCharacterRegex(); /** Column name Updated */ @@ -299,35 +338,4 @@ public interface I_AD_PasswordRule * 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(); } diff --git a/org.adempiere.base/src/org/compiere/model/MPasswordRule.java b/org.adempiere.base/src/org/compiere/model/MPasswordRule.java index 976c60c5ad..2764a35c54 100644 --- a/org.adempiere.base/src/org/compiere/model/MPasswordRule.java +++ b/org.adempiere.base/src/org/compiere/model/MPasswordRule.java @@ -21,20 +21,27 @@ package org.compiere.model; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; +import java.io.InputStream; import java.sql.ResultSet; import java.util.ArrayList; import java.util.Properties; +import org.adempiere.exceptions.AdempiereException; +import org.compiere.util.Env; +import org.compiere.util.Msg; + 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.AlphabeticalCharacterRule; 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.MessageResolver; import edu.vt.middleware.password.NonAlphanumericCharacterRule; import edu.vt.middleware.password.NumericalSequenceRule; import edu.vt.middleware.password.Password; @@ -45,6 +52,7 @@ 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.UsernameRule; import edu.vt.middleware.password.WhitespaceRule; /** @@ -55,7 +63,7 @@ public class MPasswordRule extends X_AD_PasswordRule { /** * */ - private static final long serialVersionUID = 6369065572886752718L; + private static final long serialVersionUID = -3557291675139843726L; /** * @param ctx @@ -75,69 +83,74 @@ public class MPasswordRule extends X_AD_PasswordRule { super(ctx, rs, trxName); } - public String validate(String newPassword) { - WhitespaceRule whitespaceRule; - AlphabeticalSequenceRule alphaSeqRule; - NumericalSequenceRule numSeqRule; - QwertySequenceRule qwertySeqRule; - RepeatCharacterRegexRule repeatRule; + public void validate(String username, String newPassword) throws AdempiereException { ArrayList ruleList = new ArrayList(); - if (getMinLength()>0 || getMaxLength()>0) { + if (getMinLength() > 0 || getMaxLength() > 0) { LengthRule lengthRule = new LengthRule(); - if (getMinLength()>0) + if (getMinLength() > 0) lengthRule.setMinimumLength(getMinLength()); - if (getMaxLength()>0) + if (getMaxLength() > 0) lengthRule.setMaximumLength(getMaxLength()); ruleList.add(lengthRule); - } - - if (iswhitespace()) { - whitespaceRule = new WhitespaceRule(); - ruleList.add(whitespaceRule); } + + if (isWhitespace()) { + ruleList.add(new WhitespaceRule()); + } + // control allowed characters CharacterCharacteristicsRule charRule = new CharacterCharacteristicsRule(); - - if (getDigitCharacter()>0) { - // require at least 1 digit in passwords + int numValidations = 0; + if (getDigitCharacter() > 0) { + // require at least n digit in passwords + numValidations++; charRule.getRules().add(new DigitCharacterRule(getDigitCharacter())); } - if (getNonAlphaNumericCharacter()>0) { - // require at least 1 non-alphanumeric char + if (getNonAlphaNumericCharacter() > 0) { + // require at least n non-alphanumeric char + numValidations++; charRule.getRules().add(new NonAlphanumericCharacterRule(getNonAlphaNumericCharacter())); } - if (getUppercaseCharacter()>0) { + if (getUppercaseCharacter() > 0) { + numValidations++; charRule.getRules().add(new UppercaseCharacterRule(getUppercaseCharacter())); } - - if (getLowercaseCharacter()>0) { + if (getLowercaseCharacter() > 0) { + numValidations++; charRule.getRules().add(new LowercaseCharacterRule(getLowercaseCharacter())); } - ruleList.add(charRule); - - if (isAlphabeticalSequence()) { - alphaSeqRule=new AlphabeticalSequenceRule(); - ruleList.add(alphaSeqRule); + if (getAlphabeticalCharacter() > 0){ + numValidations++; + charRule.getRules().add(new AlphabeticalCharacterRule(getAlphabeticalCharacter())); + } + if (! charRule.getRules().isEmpty()) { + charRule.setNumberOfCharacteristics(numValidations); + ruleList.add(charRule); } - if (getNumericalSequence()>0) { - numSeqRule = new NumericalSequenceRule(getNumericalSequence(),true); - ruleList.add(numSeqRule); - } - if (isQWERTYSequence()) { - qwertySeqRule = new QwertySequenceRule(); - ruleList.add(qwertySeqRule); + if (getAlphabeticalSequence() > 0) { + ruleList.add(new AlphabeticalSequenceRule(getAlphabeticalSequence(), true)); } - if (getRepeatCharacterRegex()>0) { - repeatRule = new RepeatCharacterRegexRule(getRepeatCharacterRegex()); - ruleList.add(repeatRule); + if (getNumericalSequence() > 0) { + ruleList.add(new NumericalSequenceRule(getNumericalSequence(), true)); + } + if (getQWERTYSequence() > 0) { + ruleList.add(new QwertySequenceRule(getQWERTYSequence(), true)); + } + + if (getRepeatCharacterRegex() > 0) { + ruleList.add(new RepeatCharacterRegexRule(getRepeatCharacterRegex())); + } + + if (isUserNameRule()) { + ruleList.add(new UsernameRule(true, true)); } if (isUsingDictionary()) { - if (getPathDictionary().length()>0) { + if (getPathDictionary().length() > 0) { try { ArrayWordList awl = WordLists.createFromReader( new FileReader[] {new FileReader(getPathDictionary())}, @@ -147,10 +160,9 @@ public class MPasswordRule extends X_AD_PasswordRule { WordListDictionary dict = new WordListDictionary(awl); DictionarySubstringRule dictRule = new DictionarySubstringRule(dict); - if (getDictWordLength()>0) { + if (getDictWordLength() > 0) { dictRule.setWordLength(getDictWordLength()); // size of words to check in the password - } - else{ + } else{ dictRule.setWordLength(DictionarySubstringRule.DEFAULT_WORD_LENGTH); } @@ -160,27 +172,47 @@ public class MPasswordRule extends X_AD_PasswordRule { ruleList.add(dictRule); } catch (FileNotFoundException e) { - return "Could not find dictionary file: " + e.getMessage(); + throw new AdempiereException("Could not find dictionary file: " + e.getMessage()); } catch (IOException e) { - return "Could not read dictionary file: " + e.getMessage(); + throw new AdempiereException("Could not find dictionary file: " + e.getMessage()); } } } if (!ruleList.isEmpty()) { - PasswordValidator validator = new PasswordValidator(ruleList); + PasswordValidator validator = new PasswordValidator(getCustomResolver(), ruleList); PasswordData passwordData = new PasswordData(new Password(newPassword)); + passwordData.setUsername(username); RuleResult result = validator.validate(passwordData); if (!result.isValid()) { - String error = null; + String error = Msg.getMsg(getCtx(), "PasswordErrors") + ": ["; for (String msg : validator.getMessages(result)) { - error = (error == null ? "" : error) + " " + msg; + error = error + " " + msg; } - return error; + error = error + " ]"; + throw new AdempiereException(error); } } - return null; + } + + private MessageResolver getCustomResolver() { + Properties props = null; + InputStream in = null; + try { + String file = "vtpassword_messages_" + Env.getLoginLanguage(getCtx()).getLocale().getLanguage() + ".properties"; + in = this.getClass().getResourceAsStream(file); + if (in != null) { + props = new Properties(); + props.load(in); + } + } catch (Exception e) { + props = null; + } + if (props == null) + return new MessageResolver(); + else + return new MessageResolver(props); } } diff --git a/org.adempiere.base/src/org/compiere/model/MUser.java b/org.adempiere.base/src/org/compiere/model/MUser.java index 4c59a87807..0a691b106e 100644 --- a/org.adempiere.base/src/org/compiere/model/MUser.java +++ b/org.adempiere.base/src/org/compiere/model/MUser.java @@ -351,7 +351,7 @@ public class MUser extends X_AD_User /** User Access Rights */ private X_AD_UserBPAccess[] m_bpAccess = null; /** Password Hashed **/ - private boolean hashed = false; + private boolean being_hashed = false; /** @@ -438,10 +438,10 @@ public class MUser extends X_AD_User return; } - if ( hashed ) + if ( being_hashed ) return; - hashed = true; // prevents double call from beforeSave + being_hashed = true; // prevents double call from beforeSave // Uses a secure Random not a simple Random SecureRandom random; @@ -918,6 +918,18 @@ public class MUser extends X_AD_User setValue(super.getValue()); if (newRecord || is_ValueChanged("Password")) { + // Validate password policies / IDEMPIERE-221 + if (get_ValueOld("Salt") == null && get_Value("Salt") != null) { // being hashed + ; + } else { + int pwdruleid = MClient.get(getCtx(), getAD_Client_ID()).getAD_PasswordRule_ID(); + if (pwdruleid > 0) { + MPasswordRule pwdrule = new MPasswordRule(getCtx(), MClient.get(getCtx()).getAD_PasswordRule_ID(), get_TrxName()); + pwdrule.validate((getLDAPUser() != null ? getLDAPUser() : getName()), getPassword()); + } + } + + // Hash password - IDEMPIERE-347 boolean hash_password = MSysConfig.getBooleanValue("USER_PASSWORD_HASH", false); if (hash_password) setPassword(getPassword()); diff --git a/org.adempiere.base/src/org/compiere/model/X_AD_PasswordRule.java b/org.adempiere.base/src/org/compiere/model/X_AD_PasswordRule.java index 2fba2269e9..4697d3f672 100644 --- a/org.adempiere.base/src/org/compiere/model/X_AD_PasswordRule.java +++ b/org.adempiere.base/src/org/compiere/model/X_AD_PasswordRule.java @@ -30,7 +30,7 @@ public class X_AD_PasswordRule extends PO implements I_AD_PasswordRule, I_Persis /** * */ - private static final long serialVersionUID = 20120802L; + private static final long serialVersionUID = 20120806L; /** Standard Constructor */ public X_AD_PasswordRule (Properties ctx, int AD_PasswordRule_ID, String trxName) @@ -39,6 +39,15 @@ public class X_AD_PasswordRule extends PO implements I_AD_PasswordRule, I_Persis /** if (AD_PasswordRule_ID == 0) { setAD_PasswordRule_ID (0); + setIsDictMatchBackwards (false); +// N + setIsUserNameRule (false); +// N + setIsUsingDictionary (false); +// N + setIsWhitespace (false); +// N + setName (null); } */ } @@ -70,8 +79,8 @@ public class X_AD_PasswordRule extends PO implements I_AD_PasswordRule, I_Persis return sb.toString(); } - /** Set AD_PasswordRule. - @param AD_PasswordRule_ID AD_PasswordRule */ + /** Set Password Policies. + @param AD_PasswordRule_ID Password Policies */ public void setAD_PasswordRule_ID (int AD_PasswordRule_ID) { if (AD_PasswordRule_ID < 1) @@ -80,8 +89,8 @@ public class X_AD_PasswordRule extends PO implements I_AD_PasswordRule, I_Persis set_ValueNoCheck (COLUMNNAME_AD_PasswordRule_ID, Integer.valueOf(AD_PasswordRule_ID)); } - /** Get AD_PasswordRule. - @return AD_PasswordRule */ + /** Get Password Policies. + @return Password Policies */ public int getAD_PasswordRule_ID () { Integer ii = (Integer)get_Value(COLUMNNAME_AD_PasswordRule_ID); @@ -105,14 +114,17 @@ public class X_AD_PasswordRule extends PO implements I_AD_PasswordRule, I_Persis } /** Set Alphabetical Character. - @param AlphabeticalCharacter Alphabetical Character */ + @param AlphabeticalCharacter + Require at least # alphabetical in passwords + */ public void setAlphabeticalCharacter (int AlphabeticalCharacter) { set_Value (COLUMNNAME_AlphabeticalCharacter, Integer.valueOf(AlphabeticalCharacter)); } /** Get Alphabetical Character. - @return Alphabetical Character */ + @return Require at least # alphabetical in passwords + */ public int getAlphabeticalCharacter () { Integer ii = (Integer)get_Value(COLUMNNAME_AlphabeticalCharacter); @@ -123,50 +135,22 @@ public class X_AD_PasswordRule extends PO implements I_AD_PasswordRule, I_Persis /** Set Alphabetical Sequence. @param AlphabeticalSequence - Allow alphabetical sequences + Lenght of alphabetical sequence to validate */ - public void setAlphabeticalSequence (boolean AlphabeticalSequence) + public void setAlphabeticalSequence (int AlphabeticalSequence) { - set_Value (COLUMNNAME_AlphabeticalSequence, Boolean.valueOf(AlphabeticalSequence)); + set_Value (COLUMNNAME_AlphabeticalSequence, Integer.valueOf(AlphabeticalSequence)); } /** Get Alphabetical Sequence. - @return Allow alphabetical sequences + @return Lenght of alphabetical sequence to validate */ - public boolean isAlphabeticalSequence () + public int getAlphabeticalSequence () { - 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; + Integer ii = (Integer)get_Value(COLUMNNAME_AlphabeticalSequence); + if (ii == null) + return 0; + return ii.intValue(); } /** Set Word Length Dictionary. @@ -206,6 +190,96 @@ public class X_AD_PasswordRule extends PO implements I_AD_PasswordRule, I_Persis return ii.intValue(); } + /** Set Match Backwards of Dictionary. + @param IsDictMatchBackwards + Match dictionary words backwards + */ + public void setIsDictMatchBackwards (boolean IsDictMatchBackwards) + { + set_Value (COLUMNNAME_IsDictMatchBackwards, Boolean.valueOf(IsDictMatchBackwards)); + } + + /** Get Match Backwards of Dictionary. + @return Match dictionary words backwards + */ + public boolean isDictMatchBackwards () + { + Object oo = get_Value(COLUMNNAME_IsDictMatchBackwards); + if (oo != null) + { + if (oo instanceof Boolean) + return ((Boolean)oo).booleanValue(); + return "Y".equals(oo); + } + return false; + } + + /** Set User Name Rule. + @param IsUserNameRule + Validate the password doesn't contain user name (ignore case and match backwards) + */ + public void setIsUserNameRule (boolean IsUserNameRule) + { + set_Value (COLUMNNAME_IsUserNameRule, Boolean.valueOf(IsUserNameRule)); + } + + /** Get User Name Rule. + @return Validate the password doesn't contain user name (ignore case and match backwards) + */ + public boolean isUserNameRule () + { + Object oo = get_Value(COLUMNNAME_IsUserNameRule); + if (oo != null) + { + if (oo instanceof Boolean) + return ((Boolean)oo).booleanValue(); + return "Y".equals(oo); + } + return false; + } + + /** Set Using Dictionary. + @param IsUsingDictionary Using Dictionary */ + public void setIsUsingDictionary (boolean IsUsingDictionary) + { + set_Value (COLUMNNAME_IsUsingDictionary, Boolean.valueOf(IsUsingDictionary)); + } + + /** Get Using Dictionary. + @return Using Dictionary */ + public boolean isUsingDictionary () + { + Object oo = get_Value(COLUMNNAME_IsUsingDictionary); + if (oo != null) + { + if (oo instanceof Boolean) + return ((Boolean)oo).booleanValue(); + return "Y".equals(oo); + } + return false; + } + + /** Set Whitespace. + @param IsWhitespace Whitespace */ + public void setIsWhitespace (boolean IsWhitespace) + { + set_Value (COLUMNNAME_IsWhitespace, Boolean.valueOf(IsWhitespace)); + } + + /** Get Whitespace. + @return Whitespace */ + public boolean isWhitespace () + { + Object oo = get_Value(COLUMNNAME_IsWhitespace); + if (oo != null) + { + if (oo instanceof Boolean) + return ((Boolean)oo).booleanValue(); + return "Y".equals(oo); + } + return false; + } + /** Set Lowercase Character. @param LowercaseCharacter Require at least # lower case char @@ -246,15 +320,15 @@ public class X_AD_PasswordRule extends PO implements I_AD_PasswordRule, I_Persis return ii.intValue(); } - /** Set Min Length. - @param MinLength Min Length */ + /** Set Minimum Length. + @param MinLength Minimum Length */ public void setMinLength (int MinLength) { set_Value (COLUMNNAME_MinLength, Integer.valueOf(MinLength)); } - /** Get Min Length. - @return Min Length */ + /** Get Minimum Length. + @return Minimum Length */ public int getMinLength () { Integer ii = (Integer)get_Value(COLUMNNAME_MinLength); @@ -310,7 +384,7 @@ public class X_AD_PasswordRule extends PO implements I_AD_PasswordRule, I_Persis /** Set Numerical Sequence. @param NumericalSequence - Allow numerical sequences of length # + Length of numerical sequence to validate */ public void setNumericalSequence (int NumericalSequence) { @@ -318,7 +392,7 @@ public class X_AD_PasswordRule extends PO implements I_AD_PasswordRule, I_Persis } /** Get Numerical Sequence. - @return Allow numerical sequences of length # + @return Length of numerical sequence to validate */ public int getNumericalSequence () { @@ -344,37 +418,36 @@ public class X_AD_PasswordRule extends PO implements I_AD_PasswordRule, I_Persis /** Set QWERTY Sequence. @param QWERTYSequence - Allow QWERTY sequences + Lenght of QWERTY sequences to validate */ - public void setQWERTYSequence (boolean QWERTYSequence) + public void setQWERTYSequence (int QWERTYSequence) { - set_Value (COLUMNNAME_QWERTYSequence, Boolean.valueOf(QWERTYSequence)); + set_Value (COLUMNNAME_QWERTYSequence, Integer.valueOf(QWERTYSequence)); } /** Get QWERTY Sequence. - @return Allow QWERTY sequences + @return Lenght of QWERTY sequences to validate */ - public boolean isQWERTYSequence () + public int getQWERTYSequence () { - Object oo = get_Value(COLUMNNAME_QWERTYSequence); - if (oo != null) - { - if (oo instanceof Boolean) - return ((Boolean)oo).booleanValue(); - return "Y".equals(oo); - } - return false; + Integer ii = (Integer)get_Value(COLUMNNAME_QWERTYSequence); + if (ii == null) + return 0; + return ii.intValue(); } /** Set Repeat Character Regex. - @param RepeatCharacterRegex Repeat Character Regex */ + @param RepeatCharacterRegex + Length of repeated characters to validate + */ public void setRepeatCharacterRegex (int RepeatCharacterRegex) { set_Value (COLUMNNAME_RepeatCharacterRegex, Integer.valueOf(RepeatCharacterRegex)); } /** Get Repeat Character Regex. - @return Repeat Character Regex */ + @return Length of repeated characters to validate + */ public int getRepeatCharacterRegex () { Integer ii = (Integer)get_Value(COLUMNNAME_RepeatCharacterRegex); @@ -402,70 +475,4 @@ public class X_AD_PasswordRule extends PO implements I_AD_PasswordRule, I_Persis 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; - } } \ No newline at end of file diff --git a/org.adempiere.base/src/org/compiere/model/vtpassword_messages_es.properties b/org.adempiere.base/src/org/compiere/model/vtpassword_messages_es.properties new file mode 100644 index 0000000000..9398e893cd --- /dev/null +++ b/org.adempiere.base/src/org/compiere/model/vtpassword_messages_es.properties @@ -0,0 +1,15 @@ +HISTORY_VIOLATION=Clave coincide con una de las %1$s claves anteriores. +ILLEGAL_WORD=Clave contiene la palabra del diccionario '%1$s'. +ILLEGAL_WORD_REVERSED=Clave contiene la palabra inversa del diccionario '%1$s'. +ILLEGAL_MATCH=Clave coincide con la secuencia ilegal '%1$s'. +ILLEGAL_CHAR=Clave contiene el caracter ilegal '%1$s'. +ALLOWED_CHAR=Clave contiene el caracter ilegal '%1$s'. +ILLEGAL_SEQUENCE=Clave contiene la secuencia ilegal '%1$s'. +ILLEGAL_USERNAME=Clave contiene el identificador de usuario '%1$s'. +ILLEGAL_USERNAME_REVERSED=Clave contiene el identificador de usuario '%1$s' inverso. +ILLEGAL_WHITESPACE=Clave no puede contener espacios en blanco. +INSUFFICIENT_CHARACTERS=Clave debe contener al menos %1$s caracter(es) %2$s. +INSUFFICIENT_CHARACTERISTICS=Clave cumple %1$s de %2$s reglas de caracteres, pero %3$s son necesarias. +SOURCE_VIOLATION=Clave no puede ser la misma que su %1$s clave. +TOO_LONG=Clave debe tener hasta %2$s caracteres de longitud. +TOO_SHORT=Clave debe tener al menos %1$s caracteres de longitud.