diff --git a/pom.xml b/pom.xml index d3a5803..500dc59 100644 --- a/pom.xml +++ b/pom.xml @@ -75,6 +75,10 @@ bootstrap 3.3.7 + + org.hibernate + hibernate-validator + 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 05a24c4..d15aa3e 100644 --- a/src/main/java/fr/plil/sio/web/mvc/NewUserController.java +++ b/src/main/java/fr/plil/sio/web/mvc/NewUserController.java @@ -3,6 +3,8 @@ package fr.plil.sio.web.mvc; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.stereotype.Controller; import org.springframework.validation.BindingResult; +import org.springframework.web.bind.WebDataBinder; +import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.ModelAndView; @@ -17,6 +19,11 @@ public class NewUserController { @Resource private UserService userService; + @InitBinder + protected void initBinder(WebDataBinder binder) { + binder.addValidators(new PasswordValidator()); + } + @RequestMapping(method = RequestMethod.GET) public ModelAndView getNewUserForm() { return new ModelAndView("newUser", "userForm", new UserForm()); diff --git a/src/main/java/fr/plil/sio/web/mvc/PasswordValidator.java b/src/main/java/fr/plil/sio/web/mvc/PasswordValidator.java new file mode 100644 index 0000000..0af3d36 --- /dev/null +++ b/src/main/java/fr/plil/sio/web/mvc/PasswordValidator.java @@ -0,0 +1,34 @@ +package fr.plil.sio.web.mvc; + +import org.springframework.validation.Errors; +import org.springframework.validation.Validator; + +public class PasswordValidator implements Validator { + + + @Override + public boolean supports(Class aClass) { + return UserForm.class.equals(aClass); + } + + @Override + public void validate(Object o, Errors errors) { + UserForm userForm = (UserForm)o; + String password = userForm.getPassword(); + + int upperCase = 0; + int lowerCase = 0; + + for (int k = 0; k < password.length(); k++) { + if (Character.isUpperCase(password.charAt(k))) upperCase++; + if (Character.isLowerCase(password.charAt(k))) lowerCase++; + } + + if(upperCase == 0) { + errors.rejectValue("password", "password.validator.uppercase"); + } + if(lowerCase == 0) { + errors.rejectValue("password", "password.validator.lowercase"); + } + } +} diff --git a/src/main/resources/messages.properties b/src/main/resources/messages.properties index e663351..6b330af 100644 --- a/src/main/resources/messages.properties +++ b/src/main/resources/messages.properties @@ -9,4 +9,7 @@ view.users.main.logout=Logout new.user.page.title=New user new.user.main.header=Add a new user new.user.form.submit=Add the user -new.user.form.present=user already present \ No newline at end of file +new.user.form.present=user already present + +password.validator.uppercase=At least one uppercase in password +password.validator.lowercase=At least one lowercase in password \ No newline at end of file -- libgit2 0.21.2