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

178 lines
5.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;
/**
* TODO clean up this class
*/
@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";
}
2020-01-11 16:39:34 +01:00
@GetMapping("/articledetail")
public String articledetail() {
return "articleDetail";
}
2020-01-11 16:39:34 +01:00
@GetMapping("/searchresults")
public String searchresults() {
return "searchResults";
}
2020-01-11 16:39:34 +01:00
2020-01-12 18:00:40 +01:00
@GetMapping("/employee/articles")
public String articles() {
return "articles";
}
2020-01-12 18:00:40 +01:00
@GetMapping("/employee/listedarticles")
public String listedarticles() {
return "listedArticles";
}
2020-01-12 18:00:40 +01:00
@GetMapping("/employee/listedarticlesedit")
public String listedarticlesedit() {
return "listedArticlesEdit";
}
@GetMapping("/customer/accountsettings")
public String customerAccountSettings(Model model) {
Customer customer = new Customer();
customer.setFirstname("Max");
customer.setLastname("Mustermann");
customer.setUsername("Max.TestKunde");
customer.setPassword("test123");
model.addAttribute(customer);
model.addAttribute("fullname", customer.getFirstname() + " " + customer.getLastname());
model.addAttribute("email", "Test.User@ecommere.com");
model.addAttribute("street", "Musterstraße 42a");
model.addAttribute("city", "Musterstadt");
model.addAttribute("zipcode", "12345");
model.addAttribute("country", "Musterland");
return "customerAccountSettings";
}
@RequestMapping(value="/updateAccountSettings", method=RequestMethod.POST, params="action=updateAccountSettings")
public String updateAccountSettings(@ModelAttribute Customer customer, HttpServletResponse response) {
// do the login magic and get a loginToken
System.out.println(customer.username);
System.out.println(customer.password);
return "redirect:/customer/accountsettings";
}
@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";
}
@GetMapping("/about")
public String about() {
return "about";
}
@GetMapping("/terms")
public String terms() {
return "terms";
}
@GetMapping("/privacy")
public String privacy() {
return "privacy";
}
}