From 0399d3855f8a6934d2f966fcaf66e2bf476ecba1 Mon Sep 17 00:00:00 2001 From: Julien Iguchi-Cartigny Date: Tue, 30 Jun 2015 10:54:38 +0200 Subject: [PATCH] Adding user form --- pom.xml | 3 +-- src/main/java/fr/plil/sio/web/mvc/ApplicationMvcConfiguration.java | 2 +- src/main/java/fr/plil/sio/web/mvc/LoginController.java | 10 +++++----- src/main/java/fr/plil/sio/web/mvc/NewUserController.java | 8 ++++---- src/main/java/fr/plil/sio/web/mvc/UserForm.java | 31 +++++++++++++++++++++++++++++++ src/main/java/fr/plil/sio/web/mvc/UserFormValidator.java | 41 +++++++++++++++++++++++++++++++++++++++++ src/main/java/fr/plil/sio/web/mvc/UserValidator.java | 28 ---------------------------- src/test/java/fr/plil/sio/web/mvc/NewUserControllerTest.java | 6 +++--- src/test/java/fr/plil/sio/web/mvc/UserFormValidatorTest.java | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/test/java/fr/plil/sio/web/mvc/UserValidatorTest.java | 48 ------------------------------------------------ 10 files changed, 136 insertions(+), 91 deletions(-) create mode 100644 src/main/java/fr/plil/sio/web/mvc/UserForm.java create mode 100644 src/main/java/fr/plil/sio/web/mvc/UserFormValidator.java delete mode 100644 src/main/java/fr/plil/sio/web/mvc/UserValidator.java create mode 100644 src/test/java/fr/plil/sio/web/mvc/UserFormValidatorTest.java delete mode 100644 src/test/java/fr/plil/sio/web/mvc/UserValidatorTest.java diff --git a/pom.xml b/pom.xml index 19c7d88..9c72d58 100644 --- a/pom.xml +++ b/pom.xml @@ -9,12 +9,11 @@ war spring-mvc-sample - org.springframework.boot spring-boot-starter-parent - 1.2.3.RELEASE + 1.2.4.RELEASE diff --git a/src/main/java/fr/plil/sio/web/mvc/ApplicationMvcConfiguration.java b/src/main/java/fr/plil/sio/web/mvc/ApplicationMvcConfiguration.java index 9dda54d..ddca081 100644 --- a/src/main/java/fr/plil/sio/web/mvc/ApplicationMvcConfiguration.java +++ b/src/main/java/fr/plil/sio/web/mvc/ApplicationMvcConfiguration.java @@ -12,7 +12,7 @@ import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; @Configuration -public class ApplicationMvcConfiguration extends WebMvcConfigurerAdapter{ +public class ApplicationMvcConfiguration extends WebMvcConfigurerAdapter { private static final Logger logger = LoggerFactory.getLogger(ApplicationMvcConfiguration.class); diff --git a/src/main/java/fr/plil/sio/web/mvc/LoginController.java b/src/main/java/fr/plil/sio/web/mvc/LoginController.java index 8a5c548..f230ac7 100644 --- a/src/main/java/fr/plil/sio/web/mvc/LoginController.java +++ b/src/main/java/fr/plil/sio/web/mvc/LoginController.java @@ -26,19 +26,19 @@ public class LoginController { @RequestMapping(method = RequestMethod.POST) public String postLoginCheck(User user, BindingResult result) { - User userFromDao = userRepository.findByUsername(user.getUsername()); + User userFromRepository = userRepository.findByUsername(user.getUsername()); - if (userFromDao == null) { + if (userFromRepository == null) { result.rejectValue("username","login.form.invalid"); return "login"; } - if(!userFromDao.getPassword().equals(user.getPassword())) { + if (!userFromRepository.getPassword().equals(user.getPassword())) { result.rejectValue("username","login.form.invalid"); return "login"; } - - userSession.setUsername(userFromDao.getUsername()); + + userSession.setUsername(userFromRepository.getUsername()); return "redirect:/"; } diff --git a/src/main/java/fr/plil/sio/web/mvc/NewUserController.java b/src/main/java/fr/plil/sio/web/mvc/NewUserController.java index 4fc5da6..7439c39 100644 --- a/src/main/java/fr/plil/sio/web/mvc/NewUserController.java +++ b/src/main/java/fr/plil/sio/web/mvc/NewUserController.java @@ -18,7 +18,7 @@ public class NewUserController { private UserSession userSession; @Resource - private UserValidator userValidator; + private UserFormValidator userFormValidator; @RequestMapping(value = {"/newUser"}, method = RequestMethod.GET) public ModelAndView getNewUserForm() { @@ -32,7 +32,7 @@ public class NewUserController { result.rejectValue("username", "new.user.only.admin"); } - userValidator.validate(user, result); + userFormValidator.validate(user, result); boolean present = (userRepository.findByUsername(user.getUsername()) != null); @@ -57,7 +57,7 @@ public class NewUserController { this.userSession = userSession; } - public void setUserValidator(UserValidator userValidator) { - this.userValidator = userValidator; + public void setUserFormValidator(UserFormValidator userFormValidator) { + this.userFormValidator = userFormValidator; } } diff --git a/src/main/java/fr/plil/sio/web/mvc/UserForm.java b/src/main/java/fr/plil/sio/web/mvc/UserForm.java new file mode 100644 index 0000000..6594d9c --- /dev/null +++ b/src/main/java/fr/plil/sio/web/mvc/UserForm.java @@ -0,0 +1,31 @@ +package fr.plil.sio.web.mvc; + +import javax.validation.constraints.Max; +import javax.validation.constraints.Min; +import javax.validation.constraints.NotNull; + +public class UserForm { + + @Min(3) + @Max(16) + private String username; + + @NotNull + private String password; + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } +} diff --git a/src/main/java/fr/plil/sio/web/mvc/UserFormValidator.java b/src/main/java/fr/plil/sio/web/mvc/UserFormValidator.java new file mode 100644 index 0000000..b521a3a --- /dev/null +++ b/src/main/java/fr/plil/sio/web/mvc/UserFormValidator.java @@ -0,0 +1,41 @@ +package fr.plil.sio.web.mvc; + +import org.springframework.stereotype.Component; +import org.springframework.validation.Errors; +import org.springframework.validation.Validator; + +@Component +public class UserFormValidator implements Validator { + + @Override + public boolean supports(Class clazz) { + return UserForm.class.equals(clazz); + } + + private void checkUsername(String username, Errors errors) { + + } + + private void checkPassword(String password, Errors errors) { + boolean hasUppercase = !password.equals(password.toLowerCase()); + boolean hasLowercase = !password.equals(password.toUpperCase()); + boolean hasSpecial = !password.matches("[A-Za-z0-9 ]*"); + + if (!hasUppercase) { + errors.rejectValue("password", "validator.user.form.must.contains.uppercase"); + } + if (!hasLowercase) { + errors.rejectValue("password", "validator.user.form.must.contains.lowercase"); + } + if (!hasSpecial) { + errors.rejectValue("password", "validator.user.form.must.contains.special.char"); + } + } + + @Override + public void validate(Object target, Errors errors) { + UserForm user = (UserForm) target; + checkUsername(user.getUsername(), errors); + checkPassword(user.getPassword(), errors); + } +} \ No newline at end of file diff --git a/src/main/java/fr/plil/sio/web/mvc/UserValidator.java b/src/main/java/fr/plil/sio/web/mvc/UserValidator.java deleted file mode 100644 index d8d1b08..0000000 --- a/src/main/java/fr/plil/sio/web/mvc/UserValidator.java +++ /dev/null @@ -1,28 +0,0 @@ -package fr.plil.sio.web.mvc; - -import org.springframework.stereotype.Component; -import org.springframework.validation.Errors; -import org.springframework.validation.Validator; - -@Component -public class UserValidator implements Validator { - - @Override - public boolean supports(Class clazz) { - return User.class.equals(clazz); - } - - @Override - public void validate(Object target, Errors errors) { - User user = (User)target; - - if (user.getUsername().length() < 3) { - errors.rejectValue("username", "validator.user.username.minimal.size"); - } - - if (user.getPassword().length() < 3) { - errors.rejectValue("password", "validator.user.password.minimal.size"); - } - } - -} diff --git a/src/test/java/fr/plil/sio/web/mvc/NewUserControllerTest.java b/src/test/java/fr/plil/sio/web/mvc/NewUserControllerTest.java index 556d35a..449bfdc 100644 --- a/src/test/java/fr/plil/sio/web/mvc/NewUserControllerTest.java +++ b/src/test/java/fr/plil/sio/web/mvc/NewUserControllerTest.java @@ -17,7 +17,7 @@ public class NewUserControllerTest { private User user; private UserRepository userRepository; private UserSession userSession; - private UserValidator userValidator; + private UserFormValidator userFormValidator; @Before public void createInstances() { @@ -33,8 +33,8 @@ public class NewUserControllerTest { userSession = new UserSession(); userSession.setUsername("admin"); newUserController.setUserSession(userSession); - userValidator = new UserValidator(); - newUserController.setUserValidator(userValidator); + userFormValidator = new UserFormValidator(); + newUserController.setUserFormValidator(userFormValidator); } @Test diff --git a/src/test/java/fr/plil/sio/web/mvc/UserFormValidatorTest.java b/src/test/java/fr/plil/sio/web/mvc/UserFormValidatorTest.java new file mode 100644 index 0000000..ab6b411 --- /dev/null +++ b/src/test/java/fr/plil/sio/web/mvc/UserFormValidatorTest.java @@ -0,0 +1,50 @@ +package fr.plil.sio.web.mvc; + +import org.junit.Before; +import org.junit.Test; +import org.springframework.validation.BeanPropertyBindingResult; +import org.springframework.validation.Errors; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +public class UserFormValidatorTest { + + private User user; + private UserFormValidator validator; + private Errors results; + + @Before + public void createInstances() { + validator = new UserFormValidator(); + user = new User(); + user.setUsername("abc"); + user.setPassword("abc"); + results = new BeanPropertyBindingResult(user, "user"); + } + + @Test + public void testSupports() { + assertTrue(validator.supports(User.class)); + } + + @Test + public void testValidateCorrect() { + validator.validate(user,results); + assertFalse(results.hasErrors()); + } + + @Test + public void testValidatePasswordTooShort() { + user.setPassword("ab"); + validator.validate(user,results); + assertTrue(results.hasErrors()); + } + + @Test + public void testValidateUsernameTooShort() { + user.setUsername("ab"); + validator.validate(user,results); + assertTrue(results.hasErrors()); + } +} diff --git a/src/test/java/fr/plil/sio/web/mvc/UserValidatorTest.java b/src/test/java/fr/plil/sio/web/mvc/UserValidatorTest.java deleted file mode 100644 index e1344c8..0000000 --- a/src/test/java/fr/plil/sio/web/mvc/UserValidatorTest.java +++ /dev/null @@ -1,48 +0,0 @@ -package fr.plil.sio.web.mvc; - -import static org.junit.Assert.*; -import org.junit.Before; -import org.junit.Test; -import org.springframework.validation.BeanPropertyBindingResult; -import org.springframework.validation.Errors; - -public class UserValidatorTest { - - private User user; - private UserValidator validator; - private Errors results; - - @Before - public void createInstances() { - validator = new UserValidator(); - user = new User(); - user.setUsername("abc"); - user.setPassword("abc"); - results = new BeanPropertyBindingResult(user, "user"); - } - - @Test - public void testSupports() { - assertTrue(validator.supports(User.class)); - } - - @Test - public void testValidateCorrect() { - validator.validate(user,results); - assertFalse(results.hasErrors()); - } - - @Test - public void testValidatePasswordTooShort() { - user.setPassword("ab"); - validator.validate(user,results); - assertTrue(results.hasErrors()); - } - - @Test - public void testValidateUsernameTooShort() { - user.setUsername("ab"); - validator.validate(user,results); - assertTrue(results.hasErrors()); - } -} -- libgit2 0.21.2