From 8794554d835817a0e2f90f497a452354d650432b Mon Sep 17 00:00:00 2001
From: Hannah <hz018@hdm-stuttgart.de>
Date: Tue, 7 Nov 2023 11:34:26 +0100
Subject: [PATCH] JwToken und Security Package

---
 pom.xml                                       |  8 +++----
 .../security/CustomUserDetailsService.java    | 24 +++++++++++++++++++
 .../mi/growbros/security/JwTokenProvider.java | 19 +++++++++++++++
 3 files changed, 47 insertions(+), 4 deletions(-)
 create mode 100644 src/main/java/hdm/mi/growbros/security/CustomUserDetailsService.java
 create mode 100644 src/main/java/hdm/mi/growbros/security/JwTokenProvider.java

diff --git a/pom.xml b/pom.xml
index baa2c8a..d028657 100644
--- a/pom.xml
+++ b/pom.xml
@@ -29,10 +29,10 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
         </dependency>
-        <!--        <dependency>-->
-        <!--            <groupId>org.springframework.boot</groupId>-->
-        <!--            <artifactId>spring-boot-starter-security</artifactId>-->
-        <!--        </dependency>-->
+                <dependency>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-starter-security</artifactId>
+                </dependency>
 
         <dependency>
             <groupId>com.h2database</groupId>
diff --git a/src/main/java/hdm/mi/growbros/security/CustomUserDetailsService.java b/src/main/java/hdm/mi/growbros/security/CustomUserDetailsService.java
new file mode 100644
index 0000000..6992eec
--- /dev/null
+++ b/src/main/java/hdm/mi/growbros/security/CustomUserDetailsService.java
@@ -0,0 +1,24 @@
+package hdm.mi.growbros.security;
+
+import hdm.mi.growbros.models.user.User;
+import hdm.mi.growbros.repositories.UserRepository;
+import org.springframework.security.core.userdetails.UserDetails;
+import org.springframework.security.core.userdetails.UserDetailsService;
+import org.springframework.security.core.userdetails.UsernameNotFoundException;
+import org.springframework.stereotype.Service;
+
+import java.util.Collections;
+
+//versorgt Spring mit dem User der überprüft werden soll
+@Service
+public class CustomUserDetailsService implements UserDetailsService {
+
+    private UserRepository userRepository;
+    //user anhand der email (stellt Username dar) aus der DB holen
+    @Override
+    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
+        User user = userRepository.findByEmail(username).orElseThrow(() -> new UsernameNotFoundException("Dieser Nutzer wurde nicht gefunden"));
+
+        return new org.springframework.security.core.userdetails.User(user.getEmail(),user.getPassword(), Collections.emptyList()); //empty list, weils noch keine Privilegien gibt
+    }
+}
diff --git a/src/main/java/hdm/mi/growbros/security/JwTokenProvider.java b/src/main/java/hdm/mi/growbros/security/JwTokenProvider.java
new file mode 100644
index 0000000..554d301
--- /dev/null
+++ b/src/main/java/hdm/mi/growbros/security/JwTokenProvider.java
@@ -0,0 +1,19 @@
+package hdm.mi.growbros.security;
+
+import java.time.Instant;
+
+//Json Web Token wird zur Autorisierung verwendet
+public class JwTokenProvider {
+    //Jw Token werden mit einem Schlüssel/ Passwort signiert -> so können unr wir überprüfen ob der Token gültig ist oder nicht
+    private String jwTSecret;
+    //generiert Token anhand der Email
+    public String generateToken(String userEmail) {
+        Instant now = Instant.now();
+        String returnvalue = "hi";
+        return returnvalue;
+    }
+    public boolean validateToken(String token) {
+        return true;
+
+    }
+}
-- 
GitLab