118 lines
4.0 KiB
Java
118 lines
4.0 KiB
Java
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("/articledetail")
|
|
public String articledetail() { return "articleDetail";}
|
|
|
|
@GetMapping("/searchresults")
|
|
public String searchresults() { return "searchResults";}
|
|
|
|
@GetMapping("/employee/articles")
|
|
public String articles() { return "articles";}
|
|
|
|
@GetMapping("/employee/listedarticles")
|
|
public String listedarticles() { return "listedArticles";}
|
|
|
|
@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";
|
|
}
|
|
|
|
}
|