Commit 0399d3855f8a6934d2f966fcaf66e2bf476ecba1

Authored by Julien Iguchi-Cartigny
1 parent 64343f46

Adding user form

- add UserForm and UserFormValidator
- switch to spring boot 1.2.4
- some name fixes
... ... @@ -9,12 +9,11 @@
9 9 <packaging>war</packaging>
10 10  
11 11 <name>spring-mvc-sample</name>
12   - <description></description>
13 12  
14 13 <parent>
15 14 <groupId>org.springframework.boot</groupId>
16 15 <artifactId>spring-boot-starter-parent</artifactId>
17   - <version>1.2.3.RELEASE</version>
  16 + <version>1.2.4.RELEASE</version>
18 17 <relativePath/> <!-- lookup parent from repository -->
19 18 </parent>
20 19  
... ...
src/main/java/fr/plil/sio/web/mvc/ApplicationMvcConfiguration.java
... ... @@ -12,7 +12,7 @@ import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
12 12 import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
13 13  
14 14 @Configuration
15   -public class ApplicationMvcConfiguration extends WebMvcConfigurerAdapter{
  15 +public class ApplicationMvcConfiguration extends WebMvcConfigurerAdapter {
16 16  
17 17 private static final Logger logger = LoggerFactory.getLogger(ApplicationMvcConfiguration.class);
18 18  
... ...
src/main/java/fr/plil/sio/web/mvc/LoginController.java
... ... @@ -26,19 +26,19 @@ public class LoginController {
26 26 @RequestMapping(method = RequestMethod.POST)
27 27 public String postLoginCheck(User user, BindingResult result) {
28 28  
29   - User userFromDao = userRepository.findByUsername(user.getUsername());
  29 + User userFromRepository = userRepository.findByUsername(user.getUsername());
30 30  
31   - if (userFromDao == null) {
  31 + if (userFromRepository == null) {
32 32 result.rejectValue("username","login.form.invalid");
33 33 return "login";
34 34 }
35 35  
36   - if(!userFromDao.getPassword().equals(user.getPassword())) {
  36 + if (!userFromRepository.getPassword().equals(user.getPassword())) {
37 37 result.rejectValue("username","login.form.invalid");
38 38 return "login";
39 39 }
40   -
41   - userSession.setUsername(userFromDao.getUsername());
  40 +
  41 + userSession.setUsername(userFromRepository.getUsername());
42 42  
43 43 return "redirect:/";
44 44 }
... ...
src/main/java/fr/plil/sio/web/mvc/NewUserController.java
... ... @@ -18,7 +18,7 @@ public class NewUserController {
18 18 private UserSession userSession;
19 19  
20 20 @Resource
21   - private UserValidator userValidator;
  21 + private UserFormValidator userFormValidator;
22 22  
23 23 @RequestMapping(value = {"/newUser"}, method = RequestMethod.GET)
24 24 public ModelAndView getNewUserForm() {
... ... @@ -32,7 +32,7 @@ public class NewUserController {
32 32 result.rejectValue("username", "new.user.only.admin");
33 33 }
34 34  
35   - userValidator.validate(user, result);
  35 + userFormValidator.validate(user, result);
36 36  
37 37 boolean present = (userRepository.findByUsername(user.getUsername()) != null);
38 38  
... ... @@ -57,7 +57,7 @@ public class NewUserController {
57 57 this.userSession = userSession;
58 58 }
59 59  
60   - public void setUserValidator(UserValidator userValidator) {
61   - this.userValidator = userValidator;
  60 + public void setUserFormValidator(UserFormValidator userFormValidator) {
  61 + this.userFormValidator = userFormValidator;
62 62 }
63 63 }
... ...
src/main/java/fr/plil/sio/web/mvc/UserForm.java 0 โ†’ 100644
... ... @@ -0,0 +1,31 @@
  1 +package fr.plil.sio.web.mvc;
  2 +
  3 +import javax.validation.constraints.Max;
  4 +import javax.validation.constraints.Min;
  5 +import javax.validation.constraints.NotNull;
  6 +
  7 +public class UserForm {
  8 +
  9 + @Min(3)
  10 + @Max(16)
  11 + private String username;
  12 +
  13 + @NotNull
  14 + private String password;
  15 +
  16 + public String getUsername() {
  17 + return username;
  18 + }
  19 +
  20 + public void setUsername(String username) {
  21 + this.username = username;
  22 + }
  23 +
  24 + public String getPassword() {
  25 + return password;
  26 + }
  27 +
  28 + public void setPassword(String password) {
  29 + this.password = password;
  30 + }
  31 +}
... ...
src/main/java/fr/plil/sio/web/mvc/UserValidator.java renamed to src/main/java/fr/plil/sio/web/mvc/UserFormValidator.java
... ... @@ -5,24 +5,37 @@ import org.springframework.validation.Errors;
5 5 import org.springframework.validation.Validator;
6 6  
7 7 @Component
8   -public class UserValidator implements Validator {
  8 +public class UserFormValidator implements Validator {
9 9  
10 10 @Override
11 11 public boolean supports(Class<?> clazz) {
12   - return User.class.equals(clazz);
  12 + return UserForm.class.equals(clazz);
13 13 }
14 14  
15   - @Override
16   - public void validate(Object target, Errors errors) {
17   - User user = (User)target;
  15 + private void checkUsername(String username, Errors errors) {
18 16  
19   - if (user.getUsername().length() < 3) {
20   - errors.rejectValue("username", "validator.user.username.minimal.size");
21   - }
  17 + }
  18 +
  19 + private void checkPassword(String password, Errors errors) {
  20 + boolean hasUppercase = !password.equals(password.toLowerCase());
  21 + boolean hasLowercase = !password.equals(password.toUpperCase());
  22 + boolean hasSpecial = !password.matches("[A-Za-z0-9 ]*");
22 23  
23   - if (user.getPassword().length() < 3) {
24   - errors.rejectValue("password", "validator.user.password.minimal.size");
  24 + if (!hasUppercase) {
  25 + errors.rejectValue("password", "validator.user.form.must.contains.uppercase");
  26 + }
  27 + if (!hasLowercase) {
  28 + errors.rejectValue("password", "validator.user.form.must.contains.lowercase");
  29 + }
  30 + if (!hasSpecial) {
  31 + errors.rejectValue("password", "validator.user.form.must.contains.special.char");
25 32 }
26 33 }
27 34  
28   -}
  35 + @Override
  36 + public void validate(Object target, Errors errors) {
  37 + UserForm user = (UserForm) target;
  38 + checkUsername(user.getUsername(), errors);
  39 + checkPassword(user.getPassword(), errors);
  40 + }
  41 +}
29 42 \ No newline at end of file
... ...
src/test/java/fr/plil/sio/web/mvc/NewUserControllerTest.java
... ... @@ -17,7 +17,7 @@ public class NewUserControllerTest {
17 17 private User user;
18 18 private UserRepository userRepository;
19 19 private UserSession userSession;
20   - private UserValidator userValidator;
  20 + private UserFormValidator userFormValidator;
21 21  
22 22 @Before
23 23 public void createInstances() {
... ... @@ -33,8 +33,8 @@ public class NewUserControllerTest {
33 33 userSession = new UserSession();
34 34 userSession.setUsername("admin");
35 35 newUserController.setUserSession(userSession);
36   - userValidator = new UserValidator();
37   - newUserController.setUserValidator(userValidator);
  36 + userFormValidator = new UserFormValidator();
  37 + newUserController.setUserFormValidator(userFormValidator);
38 38 }
39 39  
40 40 @Test
... ...
src/test/java/fr/plil/sio/web/mvc/UserValidatorTest.java renamed to src/test/java/fr/plil/sio/web/mvc/UserFormValidatorTest.java
1 1 package fr.plil.sio.web.mvc;
2 2  
3   -import static org.junit.Assert.*;
4 3 import org.junit.Before;
5 4 import org.junit.Test;
6 5 import org.springframework.validation.BeanPropertyBindingResult;
7 6 import org.springframework.validation.Errors;
8 7  
9   -public class UserValidatorTest {
  8 +import static org.junit.Assert.assertFalse;
  9 +import static org.junit.Assert.assertTrue;
  10 +
  11 +public class UserFormValidatorTest {
10 12  
11 13 private User user;
12   - private UserValidator validator;
  14 + private UserFormValidator validator;
13 15 private Errors results;
14 16  
15 17 @Before
16 18 public void createInstances() {
17   - validator = new UserValidator();
  19 + validator = new UserFormValidator();
18 20 user = new User();
19 21 user.setUsername("abc");
20 22 user.setPassword("abc");
... ...