From 12b8c89ad6b7e4c1fe450475a85742a638ac1f66 Mon Sep 17 00:00:00 2001 From: Mark Reynolds Date: Wed, 5 Oct 2016 15:50:30 -0400 Subject: [PATCH] Ticket 48926 - Fixed reset & save button behavior in the password/account lockout panels Bug Description: Hitting the "reset" button would put the panel into an odd state that caused the "save" button to remain disabled. Fix Description: First, we needed to properly enable/disable all the components when initializing the password policy and account lock panels. Then when validating an update, only check enabled components. Finally, when enabling/disabling the account lock out, make sure the lockout duration is also updated. https://fedorahosted.org/389/ticket/48926 Reviewed by: ? --- .../admin/dirserv/panel/AccountLockoutPanel.java | 6 +- .../netscape/admin/dirserv/panel/BlankPanel.java | 4 + .../admin/dirserv/panel/PasswordPolicyPanel.java | 88 +++++++++++----------- 3 files changed, 54 insertions(+), 44 deletions(-) diff --git a/src/com/netscape/admin/dirserv/panel/AccountLockoutPanel.java b/src/com/netscape/admin/dirserv/panel/AccountLockoutPanel.java index ee92948..833c63a 100644 --- a/src/com/netscape/admin/dirserv/panel/AccountLockoutPanel.java +++ b/src/com/netscape/admin/dirserv/panel/AccountLockoutPanel.java @@ -140,7 +140,7 @@ public class AccountLockoutPanel extends BlankPanel { _items.addElement( _rbLockoutMinutes ); _tfLockoutMinutesValue = makeNumericalJTextField(_section, - "lockoutduration", null, 8); + "lockoutduration", LOCKOUT_DURATION_DEFAULT_VAL, 8); _items.addElement( _tfLockoutMinutesValue ); _lockoutMinutesLabel = @@ -175,7 +175,7 @@ public class AccountLockoutPanel extends BlankPanel { entries.add( _policyspecdn, LOCKOUT_FOREVER_ATTR_NAME, lo ); setComponentTable(_rbLockoutForever, lo); - DSEntryInteger lockoutDSEntry1 = new DSEntryInteger(null, + DSEntryInteger lockoutDSEntry1 = new DSEntryInteger(LOCKOUT_DURATION_DEFAULT_VAL, _tfLockoutMinutesValue, _lockoutMinutesLabel, LOCKOUT_DURATION_NUM_MIN_VAL, DSUtil.epochConstraint(LOCKOUT_DURATION_NUM_MAX_VAL, MIN_TO_DAY_FACTOR), MIN_TO_SEC_FACTOR); @@ -299,6 +299,7 @@ public class AccountLockoutPanel extends BlankPanel { viewInitialized (); enableLockout(); + enableDuration(); } } class DurationEntryBoolean extends DSEntryBoolean { @@ -373,6 +374,7 @@ public class AccountLockoutPanel extends BlankPanel { "passwordLockoutDuration"; private static final int LOCKOUT_DURATION_NUM_MIN_VAL = 1; private static final int LOCKOUT_DURATION_NUM_MAX_VAL = 35791394; + private static final String LOCKOUT_DURATION_DEFAULT_VAL = "60"; private static final int MIN_TO_SEC_FACTOR = 60; private static final int MIN_TO_DAY_FACTOR = 1440; diff --git a/src/com/netscape/admin/dirserv/panel/BlankPanel.java b/src/com/netscape/admin/dirserv/panel/BlankPanel.java index 875ba7f..fc5ff7e 100644 --- a/src/com/netscape/admin/dirserv/panel/BlankPanel.java +++ b/src/com/netscape/admin/dirserv/panel/BlankPanel.java @@ -382,6 +382,10 @@ public class BlankPanel extends JPanel while (components.hasMoreElements()) { int thisResult = DSEntry.DSE_VALID_NOMOD; JComponent comp = (JComponent)components.nextElement(); + if (comp.isEnabled() == false){ + // No need to validate disabled components + continue; + } Vector v = (Vector)_componentMapDSEntryTable.get( comp ); Enumeration entries = v.elements(); if (_verbose) { diff --git a/src/com/netscape/admin/dirserv/panel/PasswordPolicyPanel.java b/src/com/netscape/admin/dirserv/panel/PasswordPolicyPanel.java index 1a94362..6c02fb2 100644 --- a/src/com/netscape/admin/dirserv/panel/PasswordPolicyPanel.java +++ b/src/com/netscape/admin/dirserv/panel/PasswordPolicyPanel.java @@ -249,6 +249,9 @@ public class PasswordPolicyPanel extends BlankPanel { rememberPanel.add(_tfRememberValue); rememberPanel.add(Box.createHorizontalStrut(space)); rememberPanel.add(_rememberLabel2); + + enableChange(); + enableHistory(); } protected void createSyntaxArea( Container myContainer ) { @@ -475,6 +478,7 @@ public class PasswordPolicyPanel extends BlankPanel { 1, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, 0, 0, SuiConstants.COMPONENT_SPACE, 0); + enableSyntax(); } @@ -582,7 +586,8 @@ public class PasswordPolicyPanel extends BlankPanel { _graceLoginLabel2.add(Box.createHorizontalStrut(space)); _graceLoginLabel2.setHorizontalAlignment(SwingConstants.LEFT); graceLoginPanel.add(_graceLoginLabel2); - + + enableExpire(); } class DSEntryExpire extends DSEntryBoolean{ @@ -888,47 +893,46 @@ public class PasswordPolicyPanel extends BlankPanel { } else { enable = _cbCheckSyntax.isSelected(); } - - _minLengthLabel.setEnabled( enable ); - _minLengthLabel.repaint(); - _tfMinLengthValue.setEnabled( enable ); - _tfMinLengthValue.repaint(); - _minDigitsLabel.setEnabled( enable ); - _minDigitsLabel.repaint(); - _tfMinDigitsValue.setEnabled( enable ); - _tfMinDigitsValue.repaint(); - _minAlphasLabel.setEnabled( enable ); - _minAlphasLabel.repaint(); - _tfMinAlphasValue.setEnabled( enable ); - _tfMinAlphasValue.repaint(); - _minUppersLabel.setEnabled( enable ); - _minUppersLabel.repaint(); - _tfMinUppersValue.setEnabled( enable ); - _tfMinUppersValue.repaint(); - _minLowersLabel.setEnabled( enable ); - _minLowersLabel.repaint(); - _tfMinLowersValue.setEnabled( enable ); - _tfMinLowersValue.repaint(); - _minSpecialsLabel.setEnabled( enable ); - _minSpecialsLabel.repaint(); - _tfMinSpecialsValue.setEnabled( enable ); - _tfMinSpecialsValue.repaint(); - _min8bitLabel.setEnabled( enable ); - _min8bitLabel.repaint(); - _tfMin8bitValue.setEnabled( enable ); - _tfMin8bitValue.repaint(); - _maxRepeatsLabel.setEnabled( enable ); - _maxRepeatsLabel.repaint(); - _tfMaxRepeatsValue.setEnabled( enable ); - _tfMaxRepeatsValue.repaint(); - _minCategoriesLabel.setEnabled( enable ); - _minCategoriesLabel.repaint(); - _tfMinCategoriesValue.setEnabled( enable ); - _tfMinCategoriesValue.repaint(); - _minTokenLengthLabel.setEnabled( enable ); - _minTokenLengthLabel.repaint(); - _tfMinTokenLengthValue.setEnabled( enable ); - _tfMinTokenLengthValue.repaint(); + _minLengthLabel.setEnabled( enable ); + _minLengthLabel.repaint(); + _tfMinLengthValue.setEnabled( enable ); + _tfMinLengthValue.repaint(); + _minDigitsLabel.setEnabled( enable ); + _minDigitsLabel.repaint(); + _tfMinDigitsValue.setEnabled( enable ); + _tfMinDigitsValue.repaint(); + _minAlphasLabel.setEnabled( enable ); + _minAlphasLabel.repaint(); + _tfMinAlphasValue.setEnabled( enable ); + _tfMinAlphasValue.repaint(); + _minUppersLabel.setEnabled( enable ); + _minUppersLabel.repaint(); + _tfMinUppersValue.setEnabled( enable ); + _tfMinUppersValue.repaint(); + _minLowersLabel.setEnabled( enable ); + _minLowersLabel.repaint(); + _tfMinLowersValue.setEnabled( enable ); + _tfMinLowersValue.repaint(); + _minSpecialsLabel.setEnabled( enable ); + _minSpecialsLabel.repaint(); + _tfMinSpecialsValue.setEnabled( enable ); + _tfMinSpecialsValue.repaint(); + _min8bitLabel.setEnabled( enable ); + _min8bitLabel.repaint(); + _tfMin8bitValue.setEnabled( enable ); + _tfMin8bitValue.repaint(); + _maxRepeatsLabel.setEnabled( enable ); + _maxRepeatsLabel.repaint(); + _tfMaxRepeatsValue.setEnabled( enable ); + _tfMaxRepeatsValue.repaint(); + _minCategoriesLabel.setEnabled( enable ); + _minCategoriesLabel.repaint(); + _tfMinCategoriesValue.setEnabled( enable ); + _tfMinCategoriesValue.repaint(); + _minTokenLengthLabel.setEnabled( enable ); + _minTokenLengthLabel.repaint(); + _tfMinTokenLengthValue.setEnabled( enable ); + _tfMinTokenLengthValue.repaint(); } private void enableChange (){ -- 2.7.4