/* This file is part of Cyclos (www.cyclos.org). A project of the Social Trade Organisation (www.socialtrade.org). Cyclos is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. Cyclos is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Cyclos; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package nl.strohalm.cyclos.entities.settings; import nl.strohalm.cyclos.utils.DataObject; import nl.strohalm.cyclos.utils.RangeConstraint; import nl.strohalm.cyclos.utils.TimePeriod; import nl.strohalm.cyclos.utils.WhitelistValidator; /** * Groups login / access settings * @author luis */ public class AccessSettings extends DataObject { public static enum UsernameGeneration { NONE, RANDOM; } private static final long serialVersionUID = 5443049128576812703L; private boolean virtualKeyboard = false; private boolean virtualKeyboardTransactionPassword = false; private boolean numericPassword = false; private boolean allowOperatorLogin = false; private boolean allowMultipleLogins = true; private TimePeriod adminTimeout = new TimePeriod(15, TimePeriod.Field.MINUTES); private String administrationWhitelist = "#Any host"; private UsernameGeneration usernameGeneration = UsernameGeneration.NONE; private RangeConstraint usernameLength = new RangeConstraint(4, 12); private int generatedUsernameLength = 5; private TimePeriod memberTimeout = new TimePeriod(10, TimePeriod.Field.MINUTES); private String transactionPasswordChars = "ABCDEFGHIJ"; private TimePeriod poswebTimeout = new TimePeriod(1, TimePeriod.Field.DAYS); private String usernameRegex = "^[\\w\\.]*$"; private transient WhitelistValidator administrationWhitelistValidator; public String getAdministrationWhitelist() { return administrationWhitelist; } public WhitelistValidator getAdministrationWhitelistValidator() { if (administrationWhitelistValidator == null) { administrationWhitelistValidator = new WhitelistValidator(administrationWhitelist); } return administrationWhitelistValidator; } public TimePeriod getAdminTimeout() { return adminTimeout; } public int getGeneratedUsernameLength() { return generatedUsernameLength; } public TimePeriod getMemberTimeout() { return memberTimeout; } public TimePeriod getPoswebTimeout() { return poswebTimeout; } public String getTransactionPasswordChars() { return transactionPasswordChars; } public UsernameGeneration getUsernameGeneration() { return usernameGeneration; } public RangeConstraint getUsernameLength() { return usernameLength; } public String getUsernameRegex() { return usernameRegex; } public boolean isAllowMultipleLogins() { return allowMultipleLogins; } public boolean isAllowOperatorLogin() { return allowOperatorLogin; } public boolean isNumericPassword() { return numericPassword; } public boolean isUsernameGenerated() { return usernameGeneration != UsernameGeneration.NONE; } public boolean isVirtualKeyboard() { return virtualKeyboard; } public boolean isVirtualKeyboardTransactionPassword() { return virtualKeyboardTransactionPassword; } public void setAdministrationWhitelist(final String administrationWhitelist) { this.administrationWhitelist = administrationWhitelist; administrationWhitelistValidator = null; } public void setAdminTimeout(final TimePeriod adminTimeout) { this.adminTimeout = adminTimeout; } public void setAllowMultipleLogins(final boolean allowMultipleLogins) { this.allowMultipleLogins = allowMultipleLogins; } public void setAllowOperatorLogin(final boolean allowOperatorLogin) { this.allowOperatorLogin = allowOperatorLogin; } public void setGeneratedUsernameLength(final int generatedUsernameLength) { this.generatedUsernameLength = generatedUsernameLength; } public void setMemberTimeout(final TimePeriod memberTimeout) { this.memberTimeout = memberTimeout; } public void setNumericPassword(final boolean numericPassword) { this.numericPassword = numericPassword; } public void setPoswebTimeout(final TimePeriod poswebTimeout) { this.poswebTimeout = poswebTimeout; } public void setTransactionPasswordChars(final String transactionPasswordChars) { this.transactionPasswordChars = transactionPasswordChars; } public void setUsernameGeneration(final UsernameGeneration usernameGeneration) { this.usernameGeneration = usernameGeneration; } public void setUsernameLength(final RangeConstraint usernameLength) { this.usernameLength = usernameLength; } public void setUsernameRegex(final String usernameRegex) { this.usernameRegex = usernameRegex; } public void setVirtualKeyboard(final boolean appletLogin) { virtualKeyboard = appletLogin; } public void setVirtualKeyboardTransactionPassword(final boolean virtualKeyboardTransactionPassword) { this.virtualKeyboardTransactionPassword = virtualKeyboardTransactionPassword; } }