From 7686c4cda642a5be72de6c5f8ca0223a58bb1895 Mon Sep 17 00:00:00 2001
From: Tyro <danny.huber97@web.de>
Date: Tue, 19 May 2020 15:41:43 +0200
Subject: [PATCH 1/3] Create rudimentary register class

---
 .../hso/ecommerce/app/RequestController.java  | 16 -----
 .../controller/RegisterController.java        | 58 +++++++++++++++++++
 2 files changed, 58 insertions(+), 16 deletions(-)
 create mode 100644 prototype/src/main/java/org/hso/ecommerce/controller/RegisterController.java

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 36b47ce..2680f28 100644
--- a/prototype/src/main/java/org/hso/ecommerce/app/RequestController.java
+++ b/prototype/src/main/java/org/hso/ecommerce/app/RequestController.java
@@ -69,22 +69,6 @@ public class RequestController {
         return "redirect:/";
     }
 
-    @GetMapping("/register")
-    public String register() {
-        return "register";
-    }
-
-    @PostMapping("/register")
-    public String registerPost(
-            @RequestParam("username") String username,
-            @RequestParam("password") String password,
-            @RequestParam("password2") String password2,
-            @RequestParam("type") String type
-    ) {
-
-        return "redirect:/";
-    }
-
     @GetMapping("/intern/")
     public String intern() {
         return "intern/index";
diff --git a/prototype/src/main/java/org/hso/ecommerce/controller/RegisterController.java b/prototype/src/main/java/org/hso/ecommerce/controller/RegisterController.java
new file mode 100644
index 0000000..4699161
--- /dev/null
+++ b/prototype/src/main/java/org/hso/ecommerce/controller/RegisterController.java
@@ -0,0 +1,58 @@
+package org.hso.ecommerce.controller;
+
+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 java.util.Optional;
+
+@Controller
+public class RegisterController  {
+
+    @Autowired
+    private final UserRepository userRepository = null;
+
+    @PostMapping("/register")
+    public String register(
+            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,
+            @RequestParam("ad") String ad
+    )
+    {
+        Optional<User> user = userRepository.findByEmail(username);
+        if (user.isPresent()) {
+            request.setAttribute("error", "Email Adresse existiert bereits!");
+            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";
+        }
+
+        User newUser = new User();
+
+
+        return "register";
+    }
+
+    @GetMapping("/register")
+    public String register() {
+        return "register";
+    }
+}
-- 
2.47.1


From da78ab49900d524d1e7bb5bbce022fb4bdc1f685 Mon Sep 17 00:00:00 2001
From: Tyro <danny.huber97@web.de>
Date: Tue, 19 May 2020 18:47:15 +0200
Subject: [PATCH 2/3] register working

---
 .../controller/RegisterController.java        | 23 ++++++++++++++++++-
 1 file changed, 22 insertions(+), 1 deletion(-)

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 4699161..e38a583 100644
--- a/prototype/src/main/java/org/hso/ecommerce/controller/RegisterController.java
+++ b/prototype/src/main/java/org/hso/ecommerce/controller/RegisterController.java
@@ -1,5 +1,7 @@
 package org.hso.ecommerce.controller;
 
+import org.hso.ecommerce.entities.booking.PaymentMethod;
+import org.hso.ecommerce.entities.shop.Address;
 import org.hso.ecommerce.entities.user.User;
 import org.hso.ecommerce.repos.user.UserRepository;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -45,10 +47,29 @@ public class RegisterController  {
             return "register";
         }
 
+        //set values for new user
         User newUser = new User();
+        newUser.email = username;
+        newUser.setPassword(password);
+        newUser.email = username;
+        if (type.equals("bus"))
+            newUser.isEmployee = true;
+        else
+            newUser.isEmployee = false;
+        newUser.isActive = true;
+        newUser.created = new java.sql.Timestamp(System.currentTimeMillis());
 
+        Address newAddress = new Address();
+        newAddress.name = name;
+        newAddress.addressString = address;
+        newUser.defaultDeliveryAddress = newAddress;
 
-        return "register";
+        PaymentMethod defaultPaymentMethod =  PaymentMethod.fromCreditCarNumber("123456");
+        newUser.defaultPayment = defaultPaymentMethod;
+
+        userRepository.save(newUser); // save newUser
+
+        return "login";
     }
 
     @GetMapping("/register")
-- 
2.47.1


From ac79e1cf22f0b4b6157167a59bb5e738af16adf6 Mon Sep 17 00:00:00 2001
From: Tyro <danny.huber97@web.de>
Date: Sun, 24 May 2020 21:51:40 +0200
Subject: [PATCH 3/3] Check for inactive accounts Check for employee by access
 on /intern

---
 .../hso/ecommerce/app/RequestController.java    |  8 +++++++-
 .../ecommerce/components/LoginIntercepter.java  | 17 ++++++++++++++++-
 .../controller/RegisterController.java          | 15 +++++----------
 .../entities/booking/PaymentMethod.java         |  3 +--
 4 files changed, 29 insertions(+), 14 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 2680f28..bb0b5d6 100644
--- a/prototype/src/main/java/org/hso/ecommerce/app/RequestController.java
+++ b/prototype/src/main/java/org/hso/ecommerce/app/RequestController.java
@@ -46,11 +46,17 @@ public class RequestController {
             return "login";
         }
 
-        if (!user.get().validatePassword(password)) { 
+        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());
 
diff --git a/prototype/src/main/java/org/hso/ecommerce/components/LoginIntercepter.java b/prototype/src/main/java/org/hso/ecommerce/components/LoginIntercepter.java
index 8e1fc1d..e537867 100644
--- a/prototype/src/main/java/org/hso/ecommerce/components/LoginIntercepter.java
+++ b/prototype/src/main/java/org/hso/ecommerce/components/LoginIntercepter.java
@@ -24,6 +24,7 @@ public class LoginIntercepter implements HandlerInterceptor {
 
         HttpSession session = request.getSession();
         Object userId = session.getAttribute("userId");
+        Optional<User> user = null;
 
         if (request.getRequestURI().startsWith("/user/")) {
             System.out.println("USER");
@@ -43,10 +44,24 @@ public class LoginIntercepter implements HandlerInterceptor {
                 response.sendRedirect("/login");
                 return false;
             }
+
+            user = userRepository.findById((Long) userId);
+
+            if(user.isPresent() && !user.get().isEmployee)
+            {
+                session.setAttribute("afterLogin", request.getRequestURI());
+                response.sendRedirect("/");
+                return false;
+            }
+        }
+
+        if (!request.getRequestURI().startsWith("/login")) {
+            session.removeAttribute("afterLogin");
         }
 
         if (userId != null) {
-            Optional<User> user = userRepository.findById((Long) userId);
+            if (user == null)
+                user = userRepository.findById((Long) userId);
             user.ifPresent(value -> request.setAttribute("user", value));
         }
 
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 e38a583..00ade5d 100644
--- a/prototype/src/main/java/org/hso/ecommerce/controller/RegisterController.java
+++ b/prototype/src/main/java/org/hso/ecommerce/controller/RegisterController.java
@@ -1,6 +1,5 @@
 package org.hso.ecommerce.controller;
 
-import org.hso.ecommerce.entities.booking.PaymentMethod;
 import org.hso.ecommerce.entities.shop.Address;
 import org.hso.ecommerce.entities.user.User;
 import org.hso.ecommerce.repos.user.UserRepository;
@@ -21,7 +20,7 @@ public class RegisterController  {
     private final UserRepository userRepository = null;
 
     @PostMapping("/register")
-    public String register(
+    public String registerPost(
             HttpServletRequest request,
             HttpServletResponse response,
             @RequestParam("username") String username,
@@ -37,7 +36,7 @@ public class RegisterController  {
         Optional<User> user = userRepository.findByEmail(username);
         if (user.isPresent()) {
             request.setAttribute("error", "Email Adresse existiert bereits!");
-            response.setStatus(HttpServletResponse.SC_BAD_REQUEST);
+            response.setStatus(HttpServletResponse.SC_EXPECTATION_FAILED);
             return "register";
         }
 
@@ -52,10 +51,9 @@ public class RegisterController  {
         newUser.email = username;
         newUser.setPassword(password);
         newUser.email = username;
-        if (type.equals("bus"))
-            newUser.isEmployee = true;
-        else
-            newUser.isEmployee = false;
+        newUser.isEmployee = false;
+        //TODO for salutation, type, ad are no attributes/fields in the class/database. Add when they are there.
+
         newUser.isActive = true;
         newUser.created = new java.sql.Timestamp(System.currentTimeMillis());
 
@@ -64,9 +62,6 @@ public class RegisterController  {
         newAddress.addressString = address;
         newUser.defaultDeliveryAddress = newAddress;
 
-        PaymentMethod defaultPaymentMethod =  PaymentMethod.fromCreditCarNumber("123456");
-        newUser.defaultPayment = defaultPaymentMethod;
-
         userRepository.save(newUser); // save newUser
 
         return "login";
diff --git a/prototype/src/main/java/org/hso/ecommerce/entities/booking/PaymentMethod.java b/prototype/src/main/java/org/hso/ecommerce/entities/booking/PaymentMethod.java
index 4f81062..af0a9c0 100644
--- a/prototype/src/main/java/org/hso/ecommerce/entities/booking/PaymentMethod.java
+++ b/prototype/src/main/java/org/hso/ecommerce/entities/booking/PaymentMethod.java
@@ -1,11 +1,10 @@
 package org.hso.ecommerce.entities.booking;
 
 import javax.persistence.Embeddable;
-import javax.validation.constraints.NotNull;
 
 @Embeddable
 public class PaymentMethod {
-    @NotNull
+
     public String creditCardNumber;
 
     public static PaymentMethod fromCreditCarNumber(String cardnumber) {
-- 
2.47.1