diff --git a/.idea/misc.xml b/.idea/misc.xml
index ba18a6c33941ef11eae66cf92f7dc410afae5c27..14613fe5e03b18ddd991ae2d6469785815981a8c 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -8,5 +8,5 @@
       </list>
     </option>
   </component>
-  <component name="ProjectRootManager" version="2" languageLevel="JDK_X" default="true" project-jdk-name="openjdk-20" project-jdk-type="JavaSDK" />
+  <component name="ProjectRootManager" version="2" languageLevel="JDK_19" project-jdk-name="openjdk-20" project-jdk-type="JavaSDK" />
 </project>
\ No newline at end of file
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/config/authentiation/AuthenticationConfig.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/config/authentiation/AuthenticationConfig.java
index 2d2082b503173d4663f7a20e91a4fac6ce73e7f2..81c385e68293c39784b9e836d56478e13b3a0b67 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/config/authentiation/AuthenticationConfig.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/config/authentiation/AuthenticationConfig.java
@@ -24,9 +24,9 @@ import org.springframework.security.provisioning.InMemoryUserDetailsManager;
 
 /**
  * Configures the authentication for the application.
- * @author Anders (young buck)
- * @version 1.0
- * @since 04.04.2023
+ * @author Anders and  birk
+ * @version 1.1
+ * @since 05.04.2023
  */
 @Configuration
 public class AuthenticationConfig {
@@ -55,18 +55,20 @@ public class AuthenticationConfig {
     }
 
     /**
-     * Configures the authentication manager.
-     *
-     * @param userDetailsService The UserDetailsService instance for managing user details.
-     * @return An AuthenticationManager instance.
+     * Configures the authentication manager for the application.
+     * @param userDetailsService the user details service
+     * @param passwordEncoder the password encoder
+     * @return the authentication manager
      */
     @Bean
-    public AuthenticationManager authManager(UserDetailsService userDetailsService) {
-        var authProvider = new DaoAuthenticationProvider();
-        authProvider.setUserDetailsService(userDetailsService);
-        return new ProviderManager(authProvider);
+    AuthenticationManager authenticationManager (UserDetailsService userDetailsService, PasswordEncoder passwordEncoder){
+        DaoAuthenticationProvider autprovider = new DaoAuthenticationProvider();
+        autprovider.setUserDetailsService(userDetailsService);
+        autprovider.setPasswordEncoder(passwordEncoder);
+        return new ProviderManager(autprovider);
     }
 
+
     /**
      * Configures the JWKSource instance for handling RSA keys.
      *
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/AuthenticationController.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/AuthenticationController.java
index 51963b29498c2cd7472d17e5b3628f01ec3d3b5d..530ab290f14570c661cfd1a797907d4bafbaeb7d 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/AuthenticationController.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/AuthenticationController.java
@@ -1,6 +1,6 @@
 package ntnu.idatt2016.v233.SmartMat.controller;
 
-import ntnu.idatt2016.v233.SmartMat.model.request.LoginRequest;
+import ntnu.idatt2016.v233.SmartMat.entity.request.LoginRequest;
 import ntnu.idatt2016.v233.SmartMat.service.TokenService;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/model/Allergy.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/Allergy.java
similarity index 84%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/model/Allergy.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/entity/Allergy.java
index 845d776c3eb6c81a2e17dbc3227f35bd0045ef4f..86a0a1f0264813ce234a8eec011b75b143642fb8 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/model/Allergy.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/Allergy.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.model;
+package ntnu.idatt2016.v233.SmartMat.entity;
 
 /**
  * This is a record class representing an allergy
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/model/Fridge.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/Fridge.java
similarity index 83%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/model/Fridge.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/entity/Fridge.java
index 68a5751a6c4579aa41f1a81dfa7a85054dd411b4..f850aa68c8bff4af71dda4594c06409161e19a08 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/model/Fridge.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/Fridge.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.model;
+package ntnu.idatt2016.v233.SmartMat.entity;
 
 /**
  * Fridge is a record class representing a fridge in the system.
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/model/Recipe.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/Recipe.java
similarity index 84%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/model/Recipe.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/entity/Recipe.java
index c5ee55b6cd47a33b9fbd22117b6e15449ed84bf2..b28757a605179a497b5eef19a89a49b5365405a8 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/model/Recipe.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/Recipe.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.model;
+package ntnu.idatt2016.v233.SmartMat.entity;
 
 /**
  * Recipe is a record class representing a recipe in the system.
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/model/ShoppingList.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/ShoppingList.java
similarity index 85%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/model/ShoppingList.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/entity/ShoppingList.java
index 83095591b125d119ea011ad57c949bacde7b42fe..7527fb483d941687e26fb66057d8f53adc7ff95e 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/model/ShoppingList.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/ShoppingList.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.model;
+package ntnu.idatt2016.v233.SmartMat.entity;
 
 
 /**
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/model/product/Product.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/product/Product.java
similarity index 87%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/model/product/Product.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/entity/product/Product.java
index 41115213d058526bc03bd85df95b7f1c76611add..18d145730425a018dda37e64061a2b81c00effc4 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/model/product/Product.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/product/Product.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.model.product;
+package ntnu.idatt2016.v233.SmartMat.entity.product;
 
 import lombok.Builder;
 
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/model/request/LoginRequest.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/request/LoginRequest.java
similarity index 81%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/model/request/LoginRequest.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/entity/request/LoginRequest.java
index 00e4e3b6d994c9916da335e5dca0309b047b232f..b59f9b13027f4e654d8fa81d13f61e3f927d118d 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/model/request/LoginRequest.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/request/LoginRequest.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.model.request;
+package ntnu.idatt2016.v233.SmartMat.entity.request;
 
 /**
  * LoginRequest is a record class representing a login request.
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/user/Authority.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/user/Authority.java
new file mode 100644
index 0000000000000000000000000000000000000000..d624a01318775326a5fa20a80f2dcc8045efa260
--- /dev/null
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/user/Authority.java
@@ -0,0 +1,16 @@
+package ntnu.idatt2016.v233.SmartMat.entity.user;
+
+/**
+ * Authority is a enum representing an authority in the system.
+ *
+ * @author Birk
+ * @version 2.0
+ * @since 05.04.2023
+ *
+ * @param username The username of the user.
+ * @param authority The authority of the user.
+ */
+public enum Authority{
+    USER,
+    ADMIN
+}
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/model/user/Profile.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/user/Profile.java
similarity index 90%
rename from src/main/java/ntnu/idatt2016/v233/SmartMat/model/user/Profile.java
rename to src/main/java/ntnu/idatt2016/v233/SmartMat/entity/user/Profile.java
index 2b209eb54f70dfe730cf27c54a2ac3fd2861c2ee..dc3e7d1217d071fbf4188acd85517fe42d0bad65 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/model/user/Profile.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/user/Profile.java
@@ -1,4 +1,4 @@
-package ntnu.idatt2016.v233.SmartMat.model.user;
+package ntnu.idatt2016.v233.SmartMat.entity.user;
 
 /**
  * Profile is a record class representing a profile in the system.
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/user/User.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/user/User.java
new file mode 100644
index 0000000000000000000000000000000000000000..2ea88151d76f9f89b89451d7632703a40e59aa85
--- /dev/null
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/user/User.java
@@ -0,0 +1,99 @@
+package ntnu.idatt2016.v233.SmartMat.entity.user;
+
+
+import jakarta.persistence.*;
+import lombok.Builder;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.authority.SimpleGrantedAuthority;
+import org.springframework.security.core.userdetails.UserDetails;
+
+import java.util.Collection;
+import java.util.List;
+
+/**
+ * User is a class representing a user in the system.
+ * It implements the UserDetails interface.
+ *
+ * @author Anders and Birk
+ * @version 2.0
+ * @since 05.04.2023
+ *
+ */
+@Entity(name = "users")
+@Builder
+
+public class User implements UserDetails {
+    @Id
+    @Column(name = "user_name")
+    private String username;
+    @Column(name = "password")
+    private String password;
+    @Column(name = "enabled")
+    private boolean enabled;
+
+    @Enumerated(EnumType.STRING)
+    private Authority authority;
+
+    /**
+     * used when created jwts and validating user authority
+     * @return the users authority
+     */
+    @Override
+    public Collection<? extends GrantedAuthority> getAuthorities() {
+        return List.of(new SimpleGrantedAuthority(authority.name()));
+    }
+
+    /**
+     * getter for the user password used in userdetails service
+     * @return the users password
+     */
+    @Override
+    public String getPassword() {
+        return this.password;
+    }
+
+    /**
+     * getter for the user username used in userdetails service
+     * @return the users username
+     */
+    @Override
+    public String getUsername() {
+        return this.username;
+    }
+
+    /**
+     * not used
+     * @return true if the account is not expired
+     */
+    @Override
+    public boolean isAccountNonExpired() {
+        return true;
+    }
+
+    /**
+     * not used
+     * @return true if the account is not locked
+     */
+    @Override
+    public boolean isAccountNonLocked() {
+        return true;
+    }
+
+    /**
+     * not used
+     * @return true if the credentials are not expired
+     */
+    @Override
+    public boolean isCredentialsNonExpired() {
+        return true;
+    }
+
+    /**
+     * used in authentication
+     * @return true if the user is enabled
+     */
+    @Override
+    public boolean isEnabled() {
+        return this.enabled;
+    }
+}
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/model/user/Authority.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/model/user/Authority.java
deleted file mode 100644
index 54de8a9474dced207649e61e8d463be3828e9bdf..0000000000000000000000000000000000000000
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/model/user/Authority.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package ntnu.idatt2016.v233.SmartMat.model.user;
-
-/**
- * Authority is a record class representing an authority in the system.
- *
- * @author Anders
- * @version 1.0
- * @since 04.04.2023
- *
- * @param username The username of the user.
- * @param authority The authority of the user.
- */
-public record Authority(String username, String authority) {
-}
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/model/user/User.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/model/user/User.java
deleted file mode 100644
index b1c944609981e8b1a268cd865bfc93145f0116dd..0000000000000000000000000000000000000000
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/model/user/User.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package ntnu.idatt2016.v233.SmartMat.model.user;
-
-
-/**
- * User is a record class representing a user in the system.
- *
- * @author Anders
- * @version 1.0
- * @since 04.04.2023
- *
- * @param username The username of the user.
- * @param password The password of the user.
- * @param enabled Whether the user is enabled.
- */
-
-public record User(String username, String password,
-                   boolean enabled, Profile profile) {
-}
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/AllergyRepository.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/AllergyRepository.java
index f675fea2cbd5b3061941f11b931f2f5d87d949b5..de46d99bd144296bc418a0395af29c3d35266d65 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/AllergyRepository.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/AllergyRepository.java
@@ -1,6 +1,6 @@
 package ntnu.idatt2016.v233.SmartMat.repository;
 
-import ntnu.idatt2016.v233.SmartMat.model.Allergy;
+import ntnu.idatt2016.v233.SmartMat.entity.Allergy;
 
 import java.util.List;
 import java.util.Optional;
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/ProductRepository.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/ProductRepository.java
index 2bacb4c9d0301fe47e9a4cb1a0108ca771e3224c..900825f32de98996432a448fa651d2725912436f 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/ProductRepository.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/ProductRepository.java
@@ -1,6 +1,6 @@
 package ntnu.idatt2016.v233.SmartMat.repository;
 
-import ntnu.idatt2016.v233.SmartMat.model.product.Product;
+import ntnu.idatt2016.v233.SmartMat.entity.product.Product;
 
 import java.util.List;
 import java.util.Optional;
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/RecipeRepository.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/RecipeRepository.java
index cae4ee3d68f3231fa3071601fce73cf22c718ca0..2083b38804689cd009b7a2275b70694d7dc9b67e 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/RecipeRepository.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/RecipeRepository.java
@@ -3,7 +3,7 @@ package ntnu.idatt2016.v233.SmartMat.repository;
 import java.util.List;
 import java.util.Optional;
 
-import ntnu.idatt2016.v233.SmartMat.model.Recipe;
+import ntnu.idatt2016.v233.SmartMat.entity.Recipe;
 
 /**
  * This interface defines the methods for the recipe repository
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/ShoppingListRepository.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/ShoppingListRepository.java
index 5153b8ee5f6138ab876e15fc651e43b2703411fd..2891cb4f2ce85b3c41d3f4a29bed2e47e3518d4d 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/ShoppingListRepository.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/ShoppingListRepository.java
@@ -3,7 +3,7 @@ package ntnu.idatt2016.v233.SmartMat.repository;
 import java.util.List;
 import java.util.Optional;
 
-import ntnu.idatt2016.v233.SmartMat.model.ShoppingList;
+import ntnu.idatt2016.v233.SmartMat.entity.ShoppingList;
 
 /**
  * This interface defines the methods for the shopping list repository
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/UserRepository.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/UserRepository.java
new file mode 100644
index 0000000000000000000000000000000000000000..0fd056cad5fa67d857f44bb0f67e1c4bfa70c7be
--- /dev/null
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/repository/UserRepository.java
@@ -0,0 +1,26 @@
+package ntnu.idatt2016.v233.SmartMat.repository;
+
+import ntnu.idatt2016.v233.SmartMat.entity.user.User;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+import java.util.Optional;
+
+/**
+ * repo for user entity
+ * uses mysql from server when ran
+ * uses h2 in memory database when testing
+ * @author birk
+ * @version 1.0
+ * @since 05.04.2023
+ */
+public interface UserRepository extends JpaRepository<User, Long>{
+
+    /**
+     * gets user from username out of database
+     * @param username username of user
+     * @return user
+     */
+    Optional<User> findByUsername(String username);
+
+
+}
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/service/ProductService.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/ProductService.java
index 55ed3ef64d74dafa458178a5e06125050b914479..4ef304eb9fc320de95cb79da512a4cb4ea58a243 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/service/ProductService.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/ProductService.java
@@ -1,10 +1,8 @@
 package ntnu.idatt2016.v233.SmartMat.service;
 
-import lombok.AllArgsConstructor;
-import ntnu.idatt2016.v233.SmartMat.model.product.Product;
+import ntnu.idatt2016.v233.SmartMat.entity.product.Product;
 import ntnu.idatt2016.v233.SmartMat.repository.ProductRepository;
 import ntnu.idatt2016.v233.SmartMat.util.ProductUtil;
-import org.springframework.beans.factory.annotation.Autowired;
 
 import java.util.List;
 import java.util.Optional;
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/service/ShoppingListService.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/ShoppingListService.java
index a9d38f5c36349ee7c1910beba4ef4aac73854a60..6749850d2f33c4bb824baa1df177da89cacd1415 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/service/ShoppingListService.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/ShoppingListService.java
@@ -3,7 +3,7 @@ package ntnu.idatt2016.v233.SmartMat.service;
 import java.util.List;
 import java.util.Optional;
 
-import ntnu.idatt2016.v233.SmartMat.model.ShoppingList;
+import ntnu.idatt2016.v233.SmartMat.entity.ShoppingList;
 import ntnu.idatt2016.v233.SmartMat.repository.ShoppingListRepository;
 
 /**
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/service/user/JpaUserDetailsService.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/user/JpaUserDetailsService.java
new file mode 100644
index 0000000000000000000000000000000000000000..d260ad8c01416997ec95480a761d2154a09a23ee
--- /dev/null
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/user/JpaUserDetailsService.java
@@ -0,0 +1,34 @@
+package ntnu.idatt2016.v233.SmartMat.service.user;
+
+import lombok.AllArgsConstructor;
+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;
+
+/**
+ * JpaUserDetailsService is a class that implements the UserDetailsService interface.
+ * @author Birk
+ * @version 1.0
+ * @since 05.04.2023
+ */
+@Service
+@AllArgsConstructor
+public class JpaUserDetailsService implements UserDetailsService {
+    private UserService userService;
+
+    /**
+     * gets user from username out of database
+     * @param username username of user
+     * @return user
+     * @throws UsernameNotFoundException
+     */
+    @Override
+    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
+        return userService.getUserFromUsername(username)
+                .orElseThrow(
+                        () -> new UsernameNotFoundException("No user found with username = " + username)
+                );
+    }
+
+}
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/service/user/UserService.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/user/UserService.java
new file mode 100644
index 0000000000000000000000000000000000000000..cda01647ebea132f9def45a3fbc015852839207d
--- /dev/null
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/service/user/UserService.java
@@ -0,0 +1,92 @@
+package ntnu.idatt2016.v233.SmartMat.service.user;
+
+import lombok.AllArgsConstructor;
+import ntnu.idatt2016.v233.SmartMat.entity.user.User;
+import ntnu.idatt2016.v233.SmartMat.repository.UserRepository;
+import org.springframework.security.core.userdetails.UsernameNotFoundException;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Optional;
+
+/**
+ * UserService is a class that implements the UserDetailsService interface.
+ * @author Birk
+ * @version 1.0
+ * @since 05.04.2023
+ */
+@Service
+@AllArgsConstructor
+public class UserService {
+
+    private UserRepository userRepository;
+
+
+    /**
+     * gets user from username out of database
+     * @param username username of user
+     * @return user
+     */
+    public Optional<User> getUserFromUsername(String username){
+        return userRepository.findByUsername(username);
+    }
+    public List<User> getUsers(){
+        return userRepository.findAll();
+    }
+
+    /**
+     * update user if it already exists
+     * cant update username from this
+     * 
+     * @param user user to update
+     * @return optional with user if succeded else return null
+     */
+    public User updateUser(User user){
+        if (this.getUserFromUsername(user.getUsername()).isPresent()){
+            return userRepository.save(user);
+        }
+        throw new UsernameNotFoundException("did not find user");
+    }
+
+    /**
+     * gets password from user
+     * @param userName username of user
+     * @return password of user
+     */
+    public String getPassword(String userName){
+        return userRepository.findByUsername(userName)
+                .orElseThrow(()-> new UsernameNotFoundException("did not find user"))
+                .getPassword();
+    }
+
+    /**
+     * saves user to database
+     * @param user user to save
+     * @return saved user
+     */
+    public User saveUser(User user){
+        if (this.getUserFromUsername(user.getUsername()).isPresent())
+            throw new RuntimeException("user already exists");
+        return userRepository.save(user);
+    }
+
+    /**
+     * saves list of users to database
+     * @param users list of users to save
+     * @return list of saved users
+     */
+    public List<User> saveUsers(List<User> users){
+
+        return userRepository.saveAll(users);
+    }
+
+
+    /**
+     * deletes user from database
+     * @param user user to delete
+     */
+    public void delete(User user) {
+        userRepository.delete(user);
+    }
+
+}
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/util/ProductUtil.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/util/ProductUtil.java
index ef00ccd4dfb9f5609e41641498e3fb50cd5093ad..4b70fed0852466f7e5d249d442d69a1e789b1d9c 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/util/ProductUtil.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/util/ProductUtil.java
@@ -1,6 +1,6 @@
 package ntnu.idatt2016.v233.SmartMat.util;
 
-import ntnu.idatt2016.v233.SmartMat.model.product.Product;
+import ntnu.idatt2016.v233.SmartMat.entity.product.Product;
 
 import java.util.Arrays;
 import java.util.List;
diff --git a/src/test/java/ntnu/idatt2016/v233/SmartMat/util/ProductUtilTest.java b/src/test/java/ntnu/idatt2016/v233/SmartMat/util/ProductUtilTest.java
index 3579696a2393181a79b4fa994a9bc72dd3a08342..2eb3f4d6d5d323351c472703aa24d61351d9d214 100644
--- a/src/test/java/ntnu/idatt2016/v233/SmartMat/util/ProductUtilTest.java
+++ b/src/test/java/ntnu/idatt2016/v233/SmartMat/util/ProductUtilTest.java
@@ -1,11 +1,9 @@
 package ntnu.idatt2016.v233.SmartMat.util;
 
-import ntnu.idatt2016.v233.SmartMat.model.product.Product;
+import ntnu.idatt2016.v233.SmartMat.entity.product.Product;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
-import java.io.Console;
-
 import static org.junit.jupiter.api.Assertions.*;
 
 class ProductUtilTest {