1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| @PostMapping(value = "/registration")
public ModelAndView saveUser(@Valid @ModelAttribute("creer-compte") UserRegistrationForm userRegistrationForm,
BindingResult bindingResult, ModelAndView modelAndView) {
modelAndView.setViewName("creer-compte");
if (bindingResult.hasErrors()) {
return modelAndView;
}
Map<String, String> variables = new HashMap<String, String>(1);
variables.put("loginName", userRegistrationForm.getLogin());
MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
mappingJackson2HttpMessageConverter.setSupportedMediaTypes(Arrays.asList(MediaType.APPLICATION_JSON, MediaType.APPLICATION_OCTET_STREAM));
restTemplate.getMessageConverters().add(mappingJackson2HttpMessageConverter);
ResponseEntity<User> userEntity = restTemplate.getForEntity(configurationService.getUrl() +"user/users/{loginName}", User.class, variables);
User userExists = userEntity.getBody();
if (userExists != null) {//ceci nous évite d'écrire une page de gestion des erreurs
logger.info("userExists", userExists.toString());
bindingResult.rejectValue("login", "error.user", "Un utilisateur est déjà enregistré avec ce compte");//Note: la variable login doit être un attribut de l'objet User, sinon erreur
return modelAndView;
}
//return "loginSuccess";
ResponseEntity<User> userEntitySaved = restTemplate.postForEntity(configurationService.getUrl() +"user/users", new User(userRegistrationForm), User.class);//point de liaison entre le client REST et le serveur REST grace à RestTemplate
User userSaved = userEntitySaved.getBody();
if(null ==userSaved){
modelAndView.addObject("saveError", "erreur de création du compte.");
return modelAndView;
}
modelAndView.setViewName("loginSuccess");
modelAndView.addObject("userSaved", userSaved);
return modelAndView;
} |
Partager