package com.PFE.ServerManager; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import org.springframework.web.servlet.ModelAndView; @Controller public class MainController { @Autowired CustomerRepository customerRepository; @Autowired RoleRepository roleRepository; @RequestMapping(value="/") public String home(){ return "home"; } @GetMapping(path="/registration") public String registration() { return "registration";//fait le lien automatiquement avec le page html du même nom //return "redirect:/...."; } @PostMapping(path="/registration") public ModelAndView addNewUser(@RequestParam String pseudo, @RequestParam String password) { //Model map, ModelAndView ou l'utilisation direct comme dans la méthode précédente sont 3 méthodes qui permettent d'envoyer des informations et donc de changer l'apparence d'une page ModelAndView modelAndView = new ModelAndView(); // il n'est peut être pas utile d'utiliser ModelAndView Customer n = new Customer(); n.setPseudo(pseudo); n.setPassword(password); Customer temp = customerRepository.findByPseudo(pseudo); /*Role nRole = roleRepository.findByRole("ADMIN"); n.setRoles(new HashSet(Arrays.asList(nRole)));*/ Role role = new Role(); // l'utilisation d'un role au lieu d'un tableau semble valide, ormis la première ligne de la table qui n'est pas utilisé role.setRole("ADMIN"); n.setRole(role); if(temp != null) { modelAndView.addObject("ok", "l'utilisateur existe déjà"); //return "login?fail"; } else { modelAndView.addObject("ok", "l'utilisateur a bien été ajouté"); customerRepository.save(n); } modelAndView.setViewName("registration"); return modelAndView; } @GetMapping(path="/login") public ModelAndView login(){ ModelAndView modelAndView = new ModelAndView(); modelAndView.setViewName("login"); return modelAndView; } //////// Ne fonctionne pas ///////// /*public String login() { return "login"; //return "redirect:/...."; //to send a request to redirect the current page }*/ /* @PostMapping(path="/login") public ModelAndView connexion(@RequestParam String pseudo, @RequestParam String password) { // @RequestParam means it is a parameter from the GET or POST request //the model Map is used by thymeleaf as a storage for values display on the html page, this is the same way for ModelAndView ModelAndView modelAndView = new ModelAndView(); Customer temp = customerRepository.findByPseudo(pseudo); if(temp != null) { modelAndView.addObject("error", "vous etes autorisé à être sur cette page"); } else{ modelAndView.addObject("error", "vous n'etes pas autorisé à être sur cette page"); } modelAndView.setViewName("login"); return modelAndView; }*/ ////////////////////////// @GetMapping(path="/all") public @ResponseBody Iterable getAllUsers() { return customerRepository.findAll(); } @RequestMapping(value="/success") public String success(){ return "success"; } }