LoginController.java 1.53 KB
package fr.plil.sio.web.mvc;

import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import javax.annotation.Resource;

@Controller
@RequestMapping(value = "/login")
public class LoginController {

    @Resource
    private UserRepository userRepository;
    
    @Resource
    private UserSession userSession;

    @RequestMapping(method = RequestMethod.GET)
    public ModelAndView getLoginForm() {
        return new ModelAndView("login", "user", new User());
    }

    @RequestMapping(method = RequestMethod.POST)
    public String postLoginCheck(User user, BindingResult result) {

        User userFromRepository = userRepository.findByUsername(user.getUsername());

        if (userFromRepository == null) {
            result.rejectValue("username","login.form.invalid");
            return "login";
        }

        if (!userFromRepository.getPassword().equals(user.getPassword())) {
            result.rejectValue("username","login.form.invalid");
            return "login";            
        }

        userSession.setUsername(userFromRepository.getUsername());

        return "redirect:/";
    }

    public void setUserRepository(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    public void setUserSession(UserSession userSession) {
        this.userSession = userSession;
    }
}