This repository has been archived on 2020-08-02. You can view files and clone it, but cannot push or open issues or pull requests.
e-commerce/prototype/src/main/java/org/hso/ecommerce/app/RequestController.java

106 lines
3.7 KiB
Java
Raw Normal View History

package org.hso.ecommerce.app;
import org.hso.ecommerce.db.CustomerRepository;
import org.hso.ecommerce.entities.Customer;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
import java.util.UUID;
@Controller
public class RequestController {
private final CustomerRepository customerRepo;
public RequestController(CustomerRepository customerRepo) {
this.customerRepo = customerRepo;
}
@GetMapping("/")
public String greeting() {
return "redirect:/home";
}
@GetMapping("/home")
public String home(Model model) {
model.addAttribute(new Customer());
return "home";
}
@GetMapping("/greeting")
public String greeting(@RequestParam(name = "name", required = false, defaultValue = "World") String name, Model model) {
model.addAttribute("name", name);
return "greeting";
}
@GetMapping("/login")
public String login(@CookieValue(value = "loginToken", defaultValue = "") String loginToken, Model model) {
model.addAttribute(new Customer());
System.out.println(loginToken); // TODO if cookie is present, redirect to home
return "login";
}
@RequestMapping(value="/login", method=RequestMethod.POST, params="action=login")
public String loginAction(@ModelAttribute Customer customer, HttpServletResponse response) {
// do the login magic and get a loginToken
System.out.println(customer.username);
System.out.println(customer.password);
List<Customer> customers = customerRepo.findByUsername(customer.username);
if (customers.size() == 1 && (customers.get(0).username.equals(customer.username) && customers.get(0).password.equals(customer.password))) {
System.out.println("The login data is valid");
String loginToken = UUID.randomUUID().toString();
// set the loginToken as session cookie
Cookie cookie = new Cookie("loginToken", loginToken);
response.addCookie(cookie);
} else {
System.out.println("The login data is invalid!");
return "redirect:/login"; // redirect so the input files get cleared, otherwise only pwd gets cleared
}
return "redirect:/home";
}
@GetMapping("/register")
public String register(@CookieValue(value = "loginToken", defaultValue = "") String loginToken, Model model) {
model.addAttribute(new Customer());
System.out.println(loginToken); // TODO if cookie is present, redirect to home
return "register";
}
@RequestMapping(value="/register", method=RequestMethod.POST, params="action=register")
public String registerAction(@ModelAttribute Customer customer, HttpServletResponse response) {
// do the register magic and get a loginToken
System.out.println(customer.username);
System.out.println(customer.password);
if (customerRepo.findByUsername(customer.username).size() != 0) {
// TODO
System.out.println("The customer exists already");
return "register";
} else {
customerRepo.save(customer);
System.out.println(customerRepo.findByUsername(customer.username).size());
}
// return a login token after successful registration
String loginToken = UUID.randomUUID().toString();
// set the loginToken as session cookie
Cookie cookie = new Cookie("loginToken", loginToken);
response.addCookie(cookie);
return "redirect:/home";
}
}