From 0f7d248d40a6eb8bde08469d2656d310a91c17d7 Mon Sep 17 00:00:00 2001 From: localhorst <localhorst@mosad.xyz> Date: Fri, 12 Jun 2020 23:31:57 +0200 Subject: [PATCH 1/3] add radio BTNs to register --- .../controller/RegisterController.java | 4 +- .../main/resources/templates/register.html | 140 +++++++++--------- 2 files changed, 75 insertions(+), 69 deletions(-) diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/RegisterController.java b/prototype/src/main/java/org/hso/ecommerce/controller/RegisterController.java index 19f81b7..efd6970 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/RegisterController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/RegisterController.java @@ -31,8 +31,8 @@ public class RegisterController { @RequestParam("salutation") String salutation, @RequestParam("name") String name, @RequestParam("address") String address, - @RequestParam("type") String type, - @RequestParam("ad") String ad, + @RequestParam("type") String type, //TODO store + @RequestParam("ad") String ad, //TODO store HttpSession session ) { diff --git a/prototype/src/main/resources/templates/register.html b/prototype/src/main/resources/templates/register.html index fccb016..a2ef401 100644 --- a/prototype/src/main/resources/templates/register.html +++ b/prototype/src/main/resources/templates/register.html @@ -1,78 +1,84 @@ <!DOCTYPE html> <html lang="de" dir="ltr" xmlns:th="http://www.thymeleaf.org"> - -<head> - <meta charset="utf-8"> - <meta name="viewport" content="width=device-width, initial-scale=0.75, user-scalable=no"> - - <title>Neuen Account erstellen</title> - <link rel="stylesheet" th:href="@{/css/ecom.css}"/> - - <script th:src="@{/js/scrollToContent.js}"></script> -</head> - -<body> -<nav th:replace="fragments/header :: header">Header</nav> -<main class="modal"> - <form class="detailflex m" th:action="@{/register}" method="POST"> - <div> - <h1>Neuen Account erstellen</h1> - </div> - <div> - <h2> Login Daten </h2> - </div> - <div> - <label for="username">Email Adresse</label> - <input class="full-width" type="text" name="username" placeholder="Email Adresse" id="username" required> - </div> - - <div> - <label for="password">Passwort</label> - <input class="full-width" type="password" name="password" placeholder="Passwort" id="password" required> - </div> - - <div> - <label for="password2">Passwort wiederholen</label> - <input class="full-width" type="password" name="password2" placeholder="Passwort" id="password2" required> - </div> - - <div> - <h2> Rechungs- und Lieferinformation </h2> - </div> - - <div class="col-2"> + <head> + <meta charset="utf-8"> + <meta name="viewport" content="width=device-width, initial-scale=0.75, user-scalable=no"> + <title>Neuen Account erstellen</title> + <link rel="stylesheet" th:href="@{/css/ecom.css}"/> + <script th:src="@{/js/scrollToContent.js}"></script> + </head> + <body> + <nav th:replace="fragments/header :: header">Header</nav> + <main class="modal"> + <form class="detailflex m" th:action="@{/register}" method="POST"> <div> - <label for="salutation">Anrede</label> - <input class="full-width" list="salutationsOpt" name="salutation" id="salutation" placeholder="Anrede" - required/> - <datalist id="salutationsOpt"> - <option value="Herr"> - <option value="Frau"> - <option value="Herr Dr."> - <option value="Frau Dr."> - </datalist> + <h1>Neuen Account erstellen</h1> </div> <div> - <label for="name">Name</label> - <input class="full-width" type="text" name="name" id="name" placeholder="Nachname Vorname" required/> + <h2> Login Daten </h2> </div> - </div> - - <div> + <div> + <label for="username">Email Adresse</label> + <input class="full-width" type="text" name="username" placeholder="Email Adresse" id="username" required> + </div> + <div> + <label for="password">Passwort</label> + <input class="full-width" type="password" name="password" placeholder="Passwort" id="password" required> + </div> + <div> + <label for="password2">Passwort wiederholen</label> + <input class="full-width" type="password" name="password2" placeholder="Passwort" id="password2" required> + </div> + <div> + <h2> Rechungs- und Lieferinformation </h2> + </div> + <div class="col-2"> + <div> + <label for="salutation">Anrede</label> + <input class="full-width" list="salutationsOpt" name="salutation" id="salutation" placeholder="Anrede" + required/> + <datalist id="salutationsOpt"> + <option value="Herr"> + <option value="Frau"> + <option value="Herr Dr."> + <option value="Frau Dr."> + </datalist> + </div> + <div> + <label for="name">Name</label> + <input class="full-width" type="text" name="name" id="name" placeholder="Nachname Vorname" required/> + </div> + </div> + <div> <label for="address">Anschrift</label> <textarea rows="5" class="full-width" type="text" name="address" id="address" - placeholder="Optional: Zusatz Optional: Unternehmen Straße Hausnummer Postleitzeit Ort Land"></textarea> - </div> - <div> + placeholder="Optional: Zusatz Optional: Unternehmen Straße Hausnummer Postleitzeit Ort Land"></textarea> + </div> + <fieldset> + <input type="radio" id="type-priv" name="type" value="priv"> + <label for="male">Ich bin Privatkunde</label><br> + <input type="radio" id="type-bus" name="type" value="bus"> + <label for="female">Ich bin Geschäftskunde</label><br> + </fieldset> + <div> + <h2> Werbung </h2> + </div> + <div> + <fieldset> + <input type="radio" id="ad-y" name="ad" value="y"> + <label for="age1">Ich möchte Werbung erhalten.</label><br> + <input type="radio" id="ad-n" name="ad" value="n"> + <label for="age2">Ich möchte keine Werbung erhalten.</label><br> + </fieldset> + </div> + <div> <button class="full-width" type="submit" name="action" value="login">Registeren</button> <a th:href="@{/terms}"> - Unsere AGBs finden sie hier. + Unsere AGBs finden sie hier. </a> - </div> - - </form> -</main> -<footer th:replace="fragments/footer :: footer"></footer> -</body> - -</html> + </div> + </form> + </main> + <footer th:replace="fragments/footer :: footer"></footer> + </body> +</html> \ No newline at end of file From a41889b2cbe1cd9e172e8168fe81c386c4e953bd Mon Sep 17 00:00:00 2001 From: localhorst <localhorst@mosad.xyz> Date: Fri, 12 Jun 2020 23:48:28 +0200 Subject: [PATCH 2/3] login in extern loginController, RequestController cleanup, login right after register --- .../hso/ecommerce/app/RequestController.java | 83 ++------------ .../ecommerce/controller/LoginController.java | 63 ++++++++++- .../controller/RegisterController.java | 105 +++++++++--------- 3 files changed, 123 insertions(+), 128 deletions(-) diff --git a/prototype/src/main/java/org/hso/ecommerce/app/RequestController.java b/prototype/src/main/java/org/hso/ecommerce/app/RequestController.java index 3039bb9..406e283 100644 --- a/prototype/src/main/java/org/hso/ecommerce/app/RequestController.java +++ b/prototype/src/main/java/org/hso/ecommerce/app/RequestController.java @@ -1,17 +1,7 @@ package org.hso.ecommerce.app; -import org.hso.ecommerce.entities.user.User; -import org.hso.ecommerce.repos.user.UserRepository; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestParam; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; -import java.util.Optional; /** * TODO clean up this class @@ -19,70 +9,13 @@ import java.util.Optional; @Controller public class RequestController { - @Autowired - private final UserRepository userRepository = null; - - static int notSoRandom = 0; - - @GetMapping("/login") - public String login() { - return "login"; - } - - @PostMapping("/login") - public String loginPost( - HttpServletRequest request, - HttpServletResponse response, - @RequestParam("username") String username, - @RequestParam("password") String password, - HttpSession session - ) { - String gto = (String) session.getAttribute("afterLogin"); - - Optional<User> user = userRepository.findByEmail(username); - if (!user.isPresent()) { - request.setAttribute("error", "Email Adresse falsch."); - response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED); - return "login"; - } - - if (!user.get().validatePassword(password)) { - request.setAttribute("error", "Passwort falsch."); - response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED); - return "login"; - } - - if (!user.get().isActive) { - request.setAttribute("error", "User ist deaktiviert."); - response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED); - return "login"; - } - - session.setAttribute("userId", user.get().getId()); - - if (gto != null && gto.startsWith("/")) { - return "redirect:" + gto; - } else { - return "redirect:/"; - } - } - - @PostMapping("/logout") - public String logoutPost(HttpServletResponse response, - HttpSession session - ) { - session.removeAttribute("userId"); - return "redirect:/"; - } - - @GetMapping("/intern/customerOrders/") - public String internCustomerOrder() { - return "intern/customerOrders/index"; - } - - @GetMapping("/intern/customerOrders/{id}") - public String internCustomerOrdersId() { - return "intern/customerOrders/id"; - } + @GetMapping("/intern/customerOrders/") + public String internCustomerOrder() { + return "intern/customerOrders/index"; + } + @GetMapping("/intern/customerOrders/{id}") + public String internCustomerOrdersId() { + return "intern/customerOrders/id"; + } } diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/LoginController.java b/prototype/src/main/java/org/hso/ecommerce/controller/LoginController.java index 5f4ebad..0138257 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/LoginController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/LoginController.java @@ -1,8 +1,69 @@ package org.hso.ecommerce.controller; +import java.util.Optional; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; + +import org.hso.ecommerce.entities.user.User; +import org.hso.ecommerce.repos.user.UserRepository; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; @Controller -//@RequestMapping("...") +@RequestMapping("/") public class LoginController { + + @Autowired + private final UserRepository userRepository = null; + + @GetMapping("login") + public String login() { + return "login"; + } + + @PostMapping("login") + public String loginPost(HttpServletRequest request, HttpServletResponse response, + @RequestParam("username") String username, @RequestParam("password") String password, HttpSession session) { + + String gto = (String) session.getAttribute("afterLogin"); + + Optional<User> user = userRepository.findByEmail(username); + if (!user.isPresent()) { + request.setAttribute("error", "Email Adresse falsch."); + response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED); + return "login"; + } + + if (!user.get().validatePassword(password)) { + request.setAttribute("error", "Passwort falsch."); + response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED); + return "login"; + } + + if (!user.get().isActive) { + request.setAttribute("error", "User ist deaktiviert."); + response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED); + return "login"; + } + + session.setAttribute("userId", user.get().getId()); + + if (gto != null && gto.startsWith("/")) { + return "redirect:" + gto; + } else { + return "redirect:/"; + } + } + + @PostMapping("logout") + public String logoutPost(HttpServletResponse response, HttpSession session) { + session.removeAttribute("userId"); + return "redirect:/"; + } } diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/RegisterController.java b/prototype/src/main/java/org/hso/ecommerce/controller/RegisterController.java index efd6970..b58099d 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/RegisterController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/RegisterController.java @@ -16,66 +16,67 @@ import javax.servlet.http.HttpSession; import java.util.Optional; @Controller -public class RegisterController { +public class RegisterController { - @Autowired - private final UserRepository userRepository = null; + @Autowired + private final UserRepository userRepository = null; - @PostMapping("/register") - public String registerPost( - HttpServletRequest request, - HttpServletResponse response, - @RequestParam("username") String username, - @RequestParam("password") String password, - @RequestParam("password2") String password2, - @RequestParam("salutation") String salutation, - @RequestParam("name") String name, - @RequestParam("address") String address, - @RequestParam("type") String type, //TODO store - @RequestParam("ad") String ad, //TODO store - HttpSession session - ) - { - Optional<User> user = userRepository.findByEmail(username); - if (user.isPresent()) { - request.setAttribute("error", "Email Adresse existiert bereits!"); - response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED); - return "register"; - } + @PostMapping("/register") + public String registerPost(HttpServletRequest request, HttpServletResponse response, + @RequestParam("username") String username, @RequestParam("password") String password, + @RequestParam("password2") String password2, @RequestParam("salutation") String salutation, + @RequestParam("name") String name, @RequestParam("address") String address, + @RequestParam("type") String type, // TODO store + @RequestParam("ad") String ad, // TODO store + HttpSession session) { + Optional<User> user = userRepository.findByEmail(username); + if (user.isPresent()) { + request.setAttribute("error", "Email Adresse existiert bereits!"); + response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED); + return "register"; + } - if (!password.equals(password2)){ - request.setAttribute("error", "Passwörter sind nicht gleich"); - response.setStatus(HttpServletResponse.SC_BAD_REQUEST); - return "register"; - } + if (!password.equals(password2)) { + request.setAttribute("error", "Passwörter sind nicht gleich"); + response.setStatus(HttpServletResponse.SC_BAD_REQUEST); + return "register"; + } - //set values for new user - User newUser = new User(); - newUser.email = username; - newUser.setPassword(password); - newUser.email = username; - newUser.isEmployee = false; - newUser.salutation = salutation; - newUser.defaultPayment = PaymentMethod.fromCreditCardNumber(""); + // set values for new user + User newUser = new User(); + newUser.email = username; + newUser.setPassword(password); + newUser.email = username; + newUser.isEmployee = false; + newUser.salutation = salutation; + newUser.defaultPayment = PaymentMethod.fromCreditCardNumber(""); - newUser.isActive = true; - newUser.created = new java.sql.Timestamp(System.currentTimeMillis()); + newUser.isActive = true; + newUser.created = new java.sql.Timestamp(System.currentTimeMillis()); - Address newAddress = new Address(); - newAddress.name = name; - newAddress.addressString = address; - newUser.defaultDeliveryAddress = newAddress; + Address newAddress = new Address(); + newAddress.name = name; + newAddress.addressString = address; + newUser.defaultDeliveryAddress = newAddress; - userRepository.save(newUser); // save newUser + userRepository.save(newUser); // save newUser - user = userRepository.findByEmail(username); - session.setAttribute("userId", user.get().getId()); + user = userRepository.findByEmail(username); + session.setAttribute("userId", user.get().getId()); - return "redirect:/"; - } + String gto = (String) session.getAttribute("afterLogin"); - @GetMapping("/register") - public String register() { - return "register"; - } + //login after register + if (gto != null && gto.startsWith("/")) { + return "redirect:" + gto; + } else { + return "redirect:/"; + } + + } + + @GetMapping("/register") + public String register() { + return "register"; + } } From e0e853a57568337752a7bb22e196212da77696c9 Mon Sep 17 00:00:00 2001 From: localhorst <localhorst@mosad.xyz> Date: Sat, 13 Jun 2020 10:41:59 +0200 Subject: [PATCH 3/3] fixes from PR review --- .../org/hso/ecommerce/controller/LoginController.java | 6 +++--- .../org/hso/ecommerce/controller/RegisterController.java | 4 ++-- prototype/src/main/resources/templates/register.html | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/LoginController.java b/prototype/src/main/java/org/hso/ecommerce/controller/LoginController.java index 0138257..94182ce 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/LoginController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/LoginController.java @@ -35,19 +35,19 @@ public class LoginController { Optional<User> user = userRepository.findByEmail(username); if (!user.isPresent()) { - request.setAttribute("error", "Email Adresse falsch."); + request.setAttribute("error", "Die Email Adresse falsch."); response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED); return "login"; } if (!user.get().validatePassword(password)) { - request.setAttribute("error", "Passwort falsch."); + request.setAttribute("error", "Das Passwort ist falsch."); response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED); return "login"; } if (!user.get().isActive) { - request.setAttribute("error", "User ist deaktiviert."); + request.setAttribute("error", "Dieses Konto ist deaktiviert.."); response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED); return "login"; } diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/RegisterController.java b/prototype/src/main/java/org/hso/ecommerce/controller/RegisterController.java index b58099d..36fcdef 100644 --- a/prototype/src/main/java/org/hso/ecommerce/controller/RegisterController.java +++ b/prototype/src/main/java/org/hso/ecommerce/controller/RegisterController.java @@ -31,13 +31,13 @@ public class RegisterController { HttpSession session) { Optional<User> user = userRepository.findByEmail(username); if (user.isPresent()) { - request.setAttribute("error", "Email Adresse existiert bereits!"); + request.setAttribute("error", "Die Email Adresse existiert bereits."); response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED); return "register"; } if (!password.equals(password2)) { - request.setAttribute("error", "Passwörter sind nicht gleich"); + request.setAttribute("error", "Die Passwörter stimmen nicht überein."); response.setStatus(HttpServletResponse.SC_BAD_REQUEST); return "register"; } diff --git a/prototype/src/main/resources/templates/register.html b/prototype/src/main/resources/templates/register.html index a2ef401..de4b839 100644 --- a/prototype/src/main/resources/templates/register.html +++ b/prototype/src/main/resources/templates/register.html @@ -56,9 +56,9 @@ </div> <fieldset> <input type="radio" id="type-priv" name="type" value="priv"> - <label for="male">Ich bin Privatkunde</label><br> + <label for="type-priv">Ich bin Privatkunde</label><br> <input type="radio" id="type-bus" name="type" value="bus"> - <label for="female">Ich bin Geschäftskunde</label><br> + <label for="type-bus">Ich bin Geschäftskunde</label><br> </fieldset> <div> <h2> Werbung </h2> @@ -66,9 +66,9 @@ <div> <fieldset> <input type="radio" id="ad-y" name="ad" value="y"> - <label for="age1">Ich möchte Werbung erhalten.</label><br> + <label for="ad-y">Ich möchte Werbung erhalten.</label><br> <input type="radio" id="ad-n" name="ad" value="n"> - <label for="age2">Ich möchte keine Werbung erhalten.</label><br> + <label for="ad-n">Ich möchte keine Werbung erhalten.</label><br> </fieldset> </div> <div>