On 12/11/2012 03:46 AM, adrian.c...@sandglass-software.com wrote: > Quoting Jacques Le Roux <jacques.le.r...@les7arts.com>: > >> Adrian Crum wrote: >>> On 12/9/2012 2:59 PM, jler...@apache.org wrote: >>>> Author: jleroux >>>> Date: Sun Dec 9 14:59:52 2012 >>>> New Revision: 1418996 >>>> >>>> URL: http://svn.apache.org/viewvc?rev=1418996&view=rev >>>> Log: >>>> A slightly modified patch from Sumit Pandit for "Additional >>>> Validation for Password : Make password pattern driven" >>>> https://issues.apache.org/jira/browse/OFBIZ-4958 >>>> >>>> Provides an additional validation for password with following >>>> capability to the system: >>>> >>>> Admin can enable/disable pattern based password capability of >>>> system. Configuration will reside in security.property file. >>>> To enable : security.login.password.pattern.enable=true >>>> To disable: security.login.password.pattern.enable=false >>>> >>>> Admin is flexible to provide his pattern string by making pattern >>>> more/less restrictive as per system requirement. Configuration >>>> will reside in security.property file. Example: >>>> security.login.password.pattern=^.*(?=. >>>> {5,})(?=.[a-zA-Z])(?=.[!@#$%^&*]).*$ >>>> >>>> Admin can provide custom error message string which will display >>>> to end user if wrong password is entered. Configuration will >>>> reside in security.properity file. >>>> >>>> jleroux: I quickly handled the error message localisation for the >>>> OOTB case. It's more complicated when the pattern gets >>>> complex... >>>> >>>> Modified: >>>> ofbiz/trunk/framework/common/config/SecurityextUiLabels.xml >>>> >>>> ofbiz/trunk/framework/common/src/org/ofbiz/common/login/LoginServices.java >>>> >>>> ofbiz/trunk/framework/security/config/security.properties >>>> >>> >>> Modified: >>> ofbiz/trunk/framework/common/src/org/ofbiz/common/login/LoginServices.java >>> >>> URL: >>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/common/src/org/ofbiz/common/login/LoginServices.java?rev=1418996&r1=1418995&r2=1418996&view=diff >>> >>> ============================================================================== >>> >>> --- >>> ofbiz/trunk/framework/common/src/org/ofbiz/common/login/LoginServices.java >>> >>> (original) +++ >>> ofbiz/trunk/framework/common/src/org/ofbiz/common/login/LoginServices.java >>> >>> Sun Dec 9 14:59:52 2012 @@ -23,6 +23,8 @@ import java.sql.Timestamp; >>> import java.util.List; import java.util.Locale; import java.util.Map; >>> +import java.util.regex.Matcher; +import java.util.regex.Pattern; >>> import >>> javax.transaction.Transaction; @@ -62,6 +64,8 @@ public class >>> LoginServices { public static final String module = >>> LoginServices.class.getName(); public static final String resource = >>> "SecurityextUiLabels"; + public static boolean usePasswordPattern = >>> "true".equals(UtilProperties.getPropertyValue("security.properties", >>> "security.login.password.pattern.enable")); + public static String >>> passwordPattern = >>> UtilProperties.getPropertyValue("security.properties", >>> "security.login.password.pattern"); >>> >>> >>> Please do not store property values in static class fields - that >>> makes >>> it impossible to change the settings at run-time. >>> >>> -Adrian >> >> Sorry it's a bit more involved than expected for this morning, could >> you please adapt it to follow your need? >> Just curious, are you using PropertyUtils class of Apache commons >> beanutils to modify properties of Java object at runtime? >> >> Read more: >> http://javarevisited.blogspot.com/2012/04/java-propertyutils-example-getting-and.html#ixzz2Ej9FUJIY >> >> > > No, I use a text editor to modify the properties file.
And then you go to /webtools/ and clear a cache item, and expect anything that has previously read the .properties file to get the new value. The way this code is written, is that the value will be read *once* when the class is loaded, and then no new value will ever be read. (this is not directed at Adrian)