180 lines
5.8 KiB
Java
180 lines
5.8 KiB
Java
package org.hso.ecommerce.app;
|
|
|
|
import org.hso.ecommerce.db.CustomerRepository;
|
|
import org.hso.ecommerce.entities.Customer;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
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;
|
|
|
|
@Autowired
|
|
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("/articledetail")
|
|
public String articledetail() {
|
|
return "articleDetail";
|
|
}
|
|
|
|
@GetMapping("/searchresults")
|
|
public String searchresults() {
|
|
return "searchResults";
|
|
}
|
|
|
|
@GetMapping("/intern/articles")
|
|
public String articles() {
|
|
return "intern/articles";
|
|
}
|
|
|
|
@GetMapping("/intern/listedarticles")
|
|
public String listedarticles() {
|
|
return "intern/listedArticles";
|
|
}
|
|
|
|
@GetMapping("/intern/listedarticlesedit")
|
|
public String listedarticlesedit() {
|
|
return "intern/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";
|
|
}
|
|
|
|
}
|