From ddd65c3d7ebd05a37b6076704dd9d90e7f2b7d80 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sun, 26 Sep 2021 22:14:55 +0200 Subject: [PATCH] Fixed #644 - trim text inputs before save --- .../advices/GlobalControllerAdvice.java | 17 +++++++++++++++++ .../authentication/WebSecurityConfig.java | 2 ++ src/main/resources/static/js/main.js | 6 ++++++ src/main/resources/templates/login.ftl | 2 +- 4 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 src/main/java/de/deadlocker8/budgetmaster/advices/GlobalControllerAdvice.java diff --git a/src/main/java/de/deadlocker8/budgetmaster/advices/GlobalControllerAdvice.java b/src/main/java/de/deadlocker8/budgetmaster/advices/GlobalControllerAdvice.java new file mode 100644 index 000000000..8bfdbb012 --- /dev/null +++ b/src/main/java/de/deadlocker8/budgetmaster/advices/GlobalControllerAdvice.java @@ -0,0 +1,17 @@ +package de.deadlocker8.budgetmaster.advices; + +import org.springframework.beans.propertyeditors.StringTrimmerEditor; +import org.springframework.web.bind.WebDataBinder; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.InitBinder; + +@ControllerAdvice +public class GlobalControllerAdvice +{ + @InitBinder + public void initBinder(WebDataBinder binder) + { + StringTrimmerEditor trimmer = new StringTrimmerEditor(false); + binder.registerCustomEditor(String.class, trimmer); + } +} diff --git a/src/main/java/de/deadlocker8/budgetmaster/authentication/WebSecurityConfig.java b/src/main/java/de/deadlocker8/budgetmaster/authentication/WebSecurityConfig.java index 47af6f107..3d4b19627 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/authentication/WebSecurityConfig.java +++ b/src/main/java/de/deadlocker8/budgetmaster/authentication/WebSecurityConfig.java @@ -3,11 +3,13 @@ package de.deadlocker8.budgetmaster.authentication; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.Customizer; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.config.annotation.web.configurers.FormLoginConfigurer; import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.web.DefaultRedirectStrategy; diff --git a/src/main/resources/static/js/main.js b/src/main/resources/static/js/main.js index 69f305f93..34b95cffa 100644 --- a/src/main/resources/static/js/main.js +++ b/src/main/resources/static/js/main.js @@ -119,3 +119,9 @@ function rgb2hex(rgb) return "#" + hex(rgb[1]) + hex(rgb[2]) + hex(rgb[3]); } + +function validateLoginForm() +{ + let passwordInput = document.getElementById('login-password'); + passwordInput.value = passwordInput.value.trim(); +} diff --git a/src/main/resources/templates/login.ftl b/src/main/resources/templates/login.ftl index 24f7e24e3..cd5b6f74b 100644 --- a/src/main/resources/templates/login.ftl +++ b/src/main/resources/templates/login.ftl @@ -15,7 +15,7 @@ <div class="card-title"> <div id="logo-container" class="center-align"><@header.logo "logo" ""/></div> </div> - <form action="<@s.url '/login'/>" method="post"> + <form action="<@s.url '/login'/>" method="post" onsubmit="return validateLoginForm()"> <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/> <input type="hidden" name="username" value="Default"> -- GitLab