diff --git a/src/main/java/de/deadlocker8/budgetmaster/controller/SettingsController.java b/src/main/java/de/deadlocker8/budgetmaster/controller/SettingsController.java index 8da778b15492ddbfc194140630602fb7c44e2ebf..86cc46e29ab62a678a218b654b8465a24185c715 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/controller/SettingsController.java +++ b/src/main/java/de/deadlocker8/budgetmaster/controller/SettingsController.java @@ -58,19 +58,17 @@ public class SettingsController extends BaseController @RequestMapping(value = "/settings/save", method = RequestMethod.POST) public String post(Model model, @ModelAttribute("Settings") Settings settings, BindingResult bindingResult, @RequestParam(value = "password") String password, + @RequestParam(value = "passwordConfirmation") String passwordConfirmation, @RequestParam(value = "languageType") String languageType) { - if(password == null || password.equals("")) - { - bindingResult.addError(new FieldError("Settings", "password", password, false, new String[]{Strings.WARNING_SETTINGS_PASSWORD_EMPTY}, null, Strings.WARNING_SETTINGS_PASSWORD_EMPTY)); - } - else if(password.length() < 3) + settings.setLanguage(LanguageType.fromName(languageType)); + + FieldError error = validatePassword(password, passwordConfirmation); + if(error != null) { - bindingResult.addError(new FieldError("Settings", "password", password, false, new String[]{Strings.WARNING_SETTINGS_PASSWORD_LENGTH}, null, Strings.WARNING_SETTINGS_PASSWORD_LENGTH)); + bindingResult.addError(error); } - settings.setLanguage(LanguageType.fromName(languageType)); - if(bindingResult.hasErrors()) { model.addAttribute("error", bindingResult); @@ -97,6 +95,30 @@ public class SettingsController extends BaseController return "redirect:/settings"; } + private FieldError validatePassword(String password, String passwordConfirmation) + { + if(password == null || password.equals("")) + { + return new FieldError("Settings", "password", password, false, new String[]{Strings.WARNING_SETTINGS_PASSWORD_EMPTY}, null, Strings.WARNING_SETTINGS_PASSWORD_EMPTY); + } + else if(password.length() < 3) + { + return new FieldError("Settings", "password", password, false, new String[]{Strings.WARNING_SETTINGS_PASSWORD_LENGTH}, null, Strings.WARNING_SETTINGS_PASSWORD_LENGTH); + } + + if(passwordConfirmation == null || passwordConfirmation.equals("")) + { + return new FieldError("Settings", "passwordConfirmation", passwordConfirmation, false, new String[]{Strings.WARNING_SETTINGS_PASSWORD_CONFIRMATION_EMPTY}, null, Strings.WARNING_SETTINGS_PASSWORD_CONFIRMATION_EMPTY); + } + + if(!password.equals(passwordConfirmation)) + { + return new FieldError("Settings", "passwordConfirmation", passwordConfirmation, false, new String[]{Strings.WARNING_SETTINGS_PASSWORD_CONFIRMATION_WRONG}, null, Strings.WARNING_SETTINGS_PASSWORD_CONFIRMATION_WRONG); + } + + return null; + } + @RequestMapping("/settings/database/requestExport") public void downloadFile(HttpServletResponse response) { diff --git a/src/main/java/de/deadlocker8/budgetmaster/utils/Strings.java b/src/main/java/de/deadlocker8/budgetmaster/utils/Strings.java index 29d778ff30c33b80505233bca1566e77b12a6494..4378afd78d3a809dfface55261b533234bfb44be 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/utils/Strings.java +++ b/src/main/java/de/deadlocker8/budgetmaster/utils/Strings.java @@ -217,6 +217,9 @@ public class Strings public static final String WARNING_WRONG_YEAR = "warning.wrong.year"; public static final String WARNING_SETTINGS_PASSWORD_EMPTY = "warning.settings.password.empty"; public static final String WARNING_SETTINGS_PASSWORD_LENGTH = "warning.settings.password.length"; + public static final String WARNING_SETTINGS_PASSWORD_CONFIRMATION_EMPTY = "warning.settings.password.confirmation.empty"; + public static final String WARNING_SETTINGS_PASSWORD_CONFIRMATION_WRONG = "warning.settings.password.confirmation.wrong"; + //ERROR public static final String ERROR_UNKNOWN_HOST = "error.unknown.host"; diff --git a/src/main/resources/languages/_de.properties b/src/main/resources/languages/_de.properties index f3c80ec1f088cf7bcdac5488c4d83abbe3157ecc..26cfe205577a09b37576d8473dffb17668c2d428 100644 --- a/src/main/resources/languages/_de.properties +++ b/src/main/resources/languages/_de.properties @@ -229,6 +229,8 @@ warning.empty.year=Bitte gib ein Jahr ein. warning.wrong.year=Bitte gib eine g�ltige Jahreszahl ein (4 Ziffern). warning.settings.password.empty=Bitte gib ein Passwort ein. warning.settings.password.length=Das Passwort muss mindestens drei Zeichen lang sein. +warning.settings.password.confirmation.empty=Bitte gib dein Passwort zur Best�tigung erneut ein. +warning.settings.password.confirmation.wrong=Passwort und Passwort Wiederholung stimmen nicht �berein. # ERROR error.unknown.host=Es konnte keine Verbindung mit dem Internet hergestellt werden. @@ -318,6 +320,7 @@ menu.accounts=Konten category.new.label.name=Name settings.password=Passwort +settings.password.confirmation=Passwort Wiederholung settings.currency=W�hrung settings.rest=�bertrag settings.rest.deactivated=Aus diff --git a/src/main/resources/languages/_en.properties b/src/main/resources/languages/_en.properties index a4bb2ec83b72c24256b931a340293ced94ad4693..2e6eedfa85d59a72380cd9f71d466162a609ed50 100644 --- a/src/main/resources/languages/_en.properties +++ b/src/main/resources/languages/_en.properties @@ -229,6 +229,8 @@ warning.empty.year=Please enter a year. warning.wrong.year=Please enter a valid year (4 digits). warning.settings.password.empty=Please enter a password. warning.settings.password.length=The password must be at least three characters long. +warning.settings.password.confirmation.empty=Please enter your password again for confirmation. +warning.settings.password.confirmation.wrong=Password and password confirmation do not match. # ERROR error.unknown.host=Could not connect to the Internet. @@ -318,6 +320,7 @@ menu.accounts=Accounts category.new.label.name=Name settings.password=Password +settings.password.confirmation=Password Confirmation settings.currency=Currency settings.rest=Rest settings.rest.deactivated=Off diff --git a/src/main/resources/templates/settings.ftl b/src/main/resources/templates/settings.ftl index 13d2f956b055dd3f559774df419bfa1928ddeae2..495d835a4e23e63f17388ee1bb2dcfe89281d08f 100644 --- a/src/main/resources/templates/settings.ftl +++ b/src/main/resources/templates/settings.ftl @@ -24,11 +24,19 @@ <#-- password --> <div class="row"> <div class="input-field col s12 m12 l8 offset-l2"> - <input id="settings-password" type="text" name="password" <@validation.validation "password"/> value="•••••"> + <input id="settings-password" type="password" name="password" <@validation.validation "password"/> value="•••••"> <label for="settings-password">${locale.getString("settings.password")}</label> </div> </div> + <#-- password confirmation--> + <div class="row"> + <div class="input-field col s12 m12 l8 offset-l2"> + <input id="settings-password-confirmation" type="password" name="passwordConfirmation" <@validation.validation "passwordConfirmation"/> value="•••••"> + <label for="settings-password-confirmation">${locale.getString("settings.password.confirmation")}</label> + </div> + </div> + <#-- currency --> <div class="row"> <div class="input-field col s12 m12 l8 offset-l2">