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&#10;Optional: Unternehmen&#10;Straße Hausnummer&#10;Postleitzeit Ort&#10;Land"></textarea>
-        </div>
-        <div>
+               placeholder="Optional: Zusatz&#10;Optional: Unternehmen&#10;Straße Hausnummer&#10;Postleitzeit Ort&#10;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>