MainController.java 3.37 KB
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<Role>(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<Customer> getAllUsers() {
        return customerRepository.findAll();
    }

    @RequestMapping(value="/success")
    public String success(){
        return "success";
    }
}