=== modified file 'dhis-2/dhis-api/src/main/java/org/hisp/dhis/useraudit/UserAuditService.java'
--- dhis-2/dhis-api/src/main/java/org/hisp/dhis/useraudit/UserAuditService.java 2010-03-30 23:08:42 +0000
+++ dhis-2/dhis-api/src/main/java/org/hisp/dhis/useraudit/UserAuditService.java 2010-03-31 16:44:55 +0000
@@ -32,9 +32,6 @@
*/
public interface UserAuditService
{
- final int TIMEFRAME_MINUTES = 10; //TODO: through System Settings
- final int MAX_NUMBER_OF_ATTEMPTS = 5; //TODO: through System Settings
-
void registerLoginSuccess( String username );
void registerLogout( String username );
=== modified file 'dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/SystemSettingManager.java'
--- dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/SystemSettingManager.java 2009-12-21 05:32:40 +0000
+++ dhis-2/dhis-options/src/main/java/org/hisp/dhis/options/SystemSettingManager.java 2010-03-31 16:44:55 +0000
@@ -47,6 +47,9 @@
final String KEY_OMIT_INDICATORS_ZERO_NUMERATOR_DATAMART = "omitIndicatorsZeroNumeratorDataMart";
final String KEY_REPORT_TEMPLATE_DIRECTORY = "reportTemplateDirectory";
final String KEY_REPORT_FRAMEWORK = "reportFramework";
+
+ final String KEY_MAX_NUMBER_OF_ATTEMPTS = "maxAttempts";
+ final String KEY_TIMEFRAME_MINUTES = "lockoutTimeframe";
final String KEY_CHR_IMAGE_DIRECTORY = "chrImageDirectory";
final String KEY_CHR_NUMBER_OF_RECORDS = "chrNumberOfRecords";
=== modified file 'dhis-2/dhis-services/dhis-service-administration/pom.xml'
--- dhis-2/dhis-services/dhis-service-administration/pom.xml 2010-03-12 11:05:35 +0000
+++ dhis-2/dhis-services/dhis-service-administration/pom.xml 2010-03-31 16:44:55 +0000
@@ -29,6 +29,10 @@
org.hisp.dhis
dhis-service-core
+
+ org.hisp.dhis
+ dhis-options
+
@@ -42,7 +46,7 @@
-
- ../../
-
+
+ ../../
+
=== modified file 'dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/useraudit/DefaultUserAuditService.java'
--- dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/useraudit/DefaultUserAuditService.java 2010-03-30 23:08:42 +0000
+++ dhis-2/dhis-services/dhis-service-administration/src/main/java/org/hisp/dhis/useraudit/DefaultUserAuditService.java 2010-03-31 16:44:55 +0000
@@ -32,10 +32,17 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.hisp.dhis.options.SystemSettingManager;
import org.springframework.transaction.annotation.Transactional;
+import static org.hisp.dhis.options.SystemSettingManager.KEY_MAX_NUMBER_OF_ATTEMPTS;
+import static org.hisp.dhis.options.SystemSettingManager.KEY_TIMEFRAME_MINUTES;
+
/**
* @author Lars Helge Overland
+ *
+ * TODO: Cleanup code by MAX_NUMBER_OF_ATTEMPTS and TIMEFRAME_MINUTES loading
+ * in system setting with default values through startup routine
*/
public class DefaultUserAuditService
implements UserAuditService
@@ -43,6 +50,16 @@
private static final Log log = LogFactory.getLog( DefaultUserAuditService.class );
+ // -------------------------------------------------------------------------
+ // Dependencies
+ // -------------------------------------------------------------------------
+ private SystemSettingManager systemSettingManager;
+
+ public void setSystemSettingManager( SystemSettingManager systemSettingManager )
+ {
+ this.systemSettingManager = systemSettingManager;
+ }
+
private UserAuditStore userAuditStore;
public void setUserAuditStore( UserAuditStore userAuditStore )
@@ -74,19 +91,22 @@
int no = userAuditStore.getLoginFailures( username, getDate() );
+ int MAX_NUMBER_OF_ATTEMPTS = 5; //DEFAULT
+
+ if ( systemSettingManager.getSystemSetting( KEY_MAX_NUMBER_OF_ATTEMPTS ) != null )
+ {
+ MAX_NUMBER_OF_ATTEMPTS = (Integer) systemSettingManager.getSystemSetting( KEY_MAX_NUMBER_OF_ATTEMPTS );
+ } else
+ {
+ systemSettingManager.saveSystemSetting( KEY_MAX_NUMBER_OF_ATTEMPTS, 5 );
+ }
+
if ( no >= MAX_NUMBER_OF_ATTEMPTS )
{
log.info( "Max number of login attempts exceeded: '" + username + "'" );
}
}
- private Date getDate()
- {
- Calendar cal = Calendar.getInstance();
- cal.add( Calendar.MINUTE, TIMEFRAME_MINUTES * -1 );
- return cal.getTime();
- }
-
@Transactional
@Override
public int getLoginFailures( String username )
@@ -98,12 +118,32 @@
@Override
public int getMaxAttempts()
{
+ int MAX_NUMBER_OF_ATTEMPTS = 5;
+
+ if ( systemSettingManager.getSystemSetting( KEY_MAX_NUMBER_OF_ATTEMPTS ) != null )
+ {
+ MAX_NUMBER_OF_ATTEMPTS = (Integer) systemSettingManager.getSystemSetting( KEY_MAX_NUMBER_OF_ATTEMPTS );
+ } else
+ {
+ systemSettingManager.saveSystemSetting( KEY_MAX_NUMBER_OF_ATTEMPTS, 5 );
+ }
+
return MAX_NUMBER_OF_ATTEMPTS;
}
@Override
public int getLockoutTimeframe()
{
+ int TIMEFRAME_MINUTES = 10; //DEFAULT
+
+ if ( systemSettingManager.getSystemSetting( KEY_TIMEFRAME_MINUTES ) != null )
+ {
+ TIMEFRAME_MINUTES = (Integer) systemSettingManager.getSystemSetting( KEY_TIMEFRAME_MINUTES );
+ } else
+ {
+ systemSettingManager.saveSystemSetting( KEY_TIMEFRAME_MINUTES, 10 );
+ }
+
return TIMEFRAME_MINUTES;
}
@@ -112,4 +152,21 @@
{
userAuditStore.resetLoginFailures( username, getDate() );
}
+
+ private Date getDate()
+ {
+ int TIMEFRAME_MINUTES = 10;
+
+ if ( systemSettingManager.getSystemSetting( KEY_TIMEFRAME_MINUTES ) != null )
+ {
+ TIMEFRAME_MINUTES = (Integer) systemSettingManager.getSystemSetting( KEY_TIMEFRAME_MINUTES );
+ } else
+ {
+ systemSettingManager.saveSystemSetting( KEY_TIMEFRAME_MINUTES, 10 );
+ }
+
+ Calendar cal = Calendar.getInstance();
+ cal.add( Calendar.MINUTE, TIMEFRAME_MINUTES * -1 );
+ return cal.getTime();
+ }
}
=== modified file 'dhis-2/dhis-services/dhis-service-administration/src/main/resources/META-INF/dhis/beans.xml'
--- dhis-2/dhis-services/dhis-service-administration/src/main/resources/META-INF/dhis/beans.xml 2010-03-06 16:00:25 +0000
+++ dhis-2/dhis-services/dhis-service-administration/src/main/resources/META-INF/dhis/beans.xml 2010-03-31 16:44:55 +0000
@@ -137,8 +137,8 @@
-
+
+
map = new HashMap( 2 );
map.put( KEY_APPLICATION_TITLE, systemSettingManager.getSystemSetting( KEY_APPLICATION_TITLE ) );
+ map.put( KEY_MAX_NUMBER_OF_ATTEMPTS, systemSettingManager.getSystemSetting( KEY_MAX_NUMBER_OF_ATTEMPTS ) );
+ map.put( KEY_TIMEFRAME_MINUTES, systemSettingManager.getSystemSetting( KEY_TIMEFRAME_MINUTES ) );
map.put( KEY_FLAG, systemSettingManager.getSystemSetting( KEY_FLAG ) );
map.put( KEY_START_MODULE, systemSettingManager.getSystemSetting( KEY_START_MODULE ) );
map.put( KEY_REPORT_FRAMEWORK, systemSettingManager.getSystemSetting( KEY_REPORT_FRAMEWORK, Report.TYPE_DEFAULT ) );
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/java/org/hisp/dhis/settings/action/system/SetSystemSettingsAction.java'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/java/org/hisp/dhis/settings/action/system/SetSystemSettingsAction.java 2009-12-21 05:32:40 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/java/org/hisp/dhis/settings/action/system/SetSystemSettingsAction.java 2010-03-31 16:44:55 +0000
@@ -28,6 +28,8 @@
*/
import static org.hisp.dhis.options.SystemSettingManager.KEY_APPLICATION_TITLE;
+import static org.hisp.dhis.options.SystemSettingManager.KEY_MAX_NUMBER_OF_ATTEMPTS;
+import static org.hisp.dhis.options.SystemSettingManager.KEY_TIMEFRAME_MINUTES;
import static org.hisp.dhis.options.SystemSettingManager.KEY_FLAG;
import static org.hisp.dhis.options.SystemSettingManager.KEY_FORUM_INTEGRATION;
import static org.hisp.dhis.options.SystemSettingManager.KEY_REPORT_FRAMEWORK;
@@ -61,7 +63,6 @@
// -------------------------------------------------------------------------
// Output
// -------------------------------------------------------------------------
-
private String applicationTitle;
public void setApplicationTitle( String applicationTitle )
@@ -69,6 +70,20 @@
this.applicationTitle = applicationTitle;
}
+ private int maxAttempts;
+
+ public void setMaxAttempts( int maxAttempts )
+ {
+ this.maxAttempts = maxAttempts;
+ }
+
+ private int lockoutTimeframe;
+
+ public void setLockoutTimeframe( int lockoutTimeframe )
+ {
+ this.lockoutTimeframe = lockoutTimeframe;
+ }
+
private String flag;
public void setFlag( String flag )
@@ -121,7 +136,6 @@
// -------------------------------------------------------------------------
// Action implementation
// -------------------------------------------------------------------------
-
public String execute()
{
if ( applicationTitle != null && applicationTitle.trim().length() == 0 )
@@ -140,6 +154,8 @@
}
systemSettingManager.saveSystemSetting( KEY_APPLICATION_TITLE, applicationTitle );
+ systemSettingManager.saveSystemSetting( KEY_MAX_NUMBER_OF_ATTEMPTS, maxAttempts );
+ systemSettingManager.saveSystemSetting( KEY_TIMEFRAME_MINUTES, lockoutTimeframe );
systemSettingManager.saveSystemSetting( KEY_FLAG, flag );
systemSettingManager.saveSystemSetting( KEY_START_MODULE, startModule );
systemSettingManager.saveSystemSetting( KEY_REPORT_FRAMEWORK, reportFramework );
@@ -147,8 +163,7 @@
systemSettingManager.saveSystemSetting( KEY_FORUM_INTEGRATION, forumIntegration );
systemSettingManager.saveSystemSetting( KEY_OMIT_INDICATORS_ZERO_NUMERATOR_DATAMART,
omitIndicatorsZeroNumeratorDataMart );
- systemSettingManager
- .saveSystemSetting( KEY_DISABLE_DATAENTRYFORM_WHEN_COMPLETED, disableDataEntryWhenCompleted );
+ systemSettingManager.saveSystemSetting( KEY_DISABLE_DATAENTRYFORM_WHEN_COMPLETED, disableDataEntryWhenCompleted );
return SUCCESS;
}
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/resources/org/hisp/dhis/settings/i18n_module.properties'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/resources/org/hisp/dhis/settings/i18n_module.properties 2010-02-10 17:00:47 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/resources/org/hisp/dhis/settings/i18n_module.properties 2010-03-31 16:44:55 +0000
@@ -13,6 +13,8 @@
custom = Custom
user_settings = User settings
application_title = Application title
+max_attempts = Maximum no. of failed attempts before lockout
+lockout_timeframe = Minutes of lockout
top_background_color = Top background colour
left_background_color = Left background colour
title_color = Title text colour
=== modified file 'dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/webapp/dhis-web-maintenance-settings/systemSettings.vm'
--- dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/webapp/dhis-web-maintenance-settings/systemSettings.vm 2009-12-21 05:32:40 +0000
+++ dhis-2/dhis-web/dhis-web-maintenance/dhis-web-maintenance-settings/src/main/webapp/dhis-web-maintenance-settings/systemSettings.vm 2010-03-31 16:44:55 +0000
@@ -7,6 +7,14 @@
+$i18n.getString( "max_attempts" )
+
+
+
+$i18n.getString( "lockout_timeframe" )
+
+
+
$i18n.getString( "flag" )