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