package org.hso.ecommerce.app; import org.hso.ecommerce.repos.user.UserRepository; import org.hso.ecommerce.entities.user.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.util.Optional; /** * TODO clean up this class */ @Controller public class RequestController { @Autowired private final UserRepository userRepository = null; @GetMapping("/") public String home() { return "redirect:/shop/"; } @GetMapping("/login") public String login() { return "login"; } @PostMapping("/login") public String loginPost( HttpServletRequest request, HttpServletResponse response, @RequestParam("username") String username, @RequestParam("password") String password, HttpSession session ) { String gto = (String) session.getAttribute("afterLogin"); Optional user = userRepository.findByEmail(username); if (user.isEmpty()) { request.setAttribute("error", "Email Adresse falsch."); response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED); return "login"; } if (!user.get().validatePassword(password)) { request.setAttribute("error", "Passwort falsch."); response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED); return "login"; } session.setAttribute("userId", user.get().getId()); if (gto != null && gto.startsWith("/")) { return "redirect:" + gto; } else { return "redirect:/"; } } @PostMapping("/logout") public String logoutPost(HttpServletResponse response, HttpSession session ) { session.removeAttribute("userId"); return "redirect:/"; } @GetMapping("/register") public String register() { return "register"; } @PostMapping("/register") public String registerPost( @RequestParam("username") String username, @RequestParam("password") String password, @RequestParam("password2") String password2, @RequestParam("type") String type ) { return "redirect:/"; } @GetMapping("/about") public String about() { return "about"; } @GetMapping("/terms") public String terms() { return "terms"; } @GetMapping("/privacy") public String privacy() { return "privacy"; } }