From c4b8be8b5f91dad69b33b2977376f36091d88c06 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Thu, 28 Jun 2018 19:41:38 +0200 Subject: [PATCH] Fixed #313 - convert password field to type password (added password confirmation input) --- .../controller/SettingsController.java | 38 +++++++++++++++---- .../budgetmaster/utils/Strings.java | 3 ++ src/main/resources/languages/_de.properties | 3 ++ src/main/resources/languages/_en.properties | 3 ++ src/main/resources/templates/settings.ftl | 10 ++++- 5 files changed, 48 insertions(+), 9 deletions(-) diff --git a/src/main/java/de/deadlocker8/budgetmaster/controller/SettingsController.java b/src/main/java/de/deadlocker8/budgetmaster/controller/SettingsController.java index 8da778b15..86cc46e29 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 29d778ff3..4378afd78 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 f3c80ec1f..26cfe2055 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 a4bb2ec83..2e6eedfa8 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 13d2f956b..495d835a4 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"> -- GitLab