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

130 lines
4.4 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";
}
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";}
@GetMapping("/employee/listedarticles")
public String listedarticles() { return "listedArticles";}
@GetMapping("/employee/listedarticlesedit")
public String listedarticlesedit() { return "listedArticlesEdit";}
@GetMapping("/about")
public String about() { return "about";}
@GetMapping("/terms")
public String terms() { return "terms";}
@GetMapping("/privacy")
public String privacy() { return "privacy";}
@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";
}
}