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