diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/config/SecurityConfig.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/config/SecurityConfig.java
index b0eb15e7d40d55b4127652e97db8663579bf26ad..ce4bc75eb8e0f3e7af774474176a756c1627f1ee 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/config/SecurityConfig.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/config/SecurityConfig.java
@@ -33,7 +33,8 @@ public class SecurityConfig {
                 .cors().and()
                 .csrf().disable()
                 .authorizeHttpRequests(auth-> auth
-                        .requestMatchers(HttpMethod.POST, "/auth/**").permitAll()
+                        .requestMatchers(HttpMethod.POST, "api/auth/**").permitAll()
+                        .requestMatchers(HttpMethod.POST, "api/user/**").permitAll()
                         .anyRequest().authenticated()
                 )
                 .oauth2ResourceServer(OAuth2ResourceServerConfigurer::jwt)
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/UserController.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/UserController.java
index 2e5af8dff9e30905ea38a5fb425985c45bd95aa4..4eb2532be8791b1e8af8e4875a61013bcd981b67 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/UserController.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/controller/UserController.java
@@ -1,4 +1,70 @@
 package ntnu.idatt2016.v233.SmartMat.controller;
 
+
+import lombok.AllArgsConstructor;
+import ntnu.idatt2016.v233.SmartMat.entity.request.RegisterUser;
+import ntnu.idatt2016.v233.SmartMat.entity.user.Authority;
+import ntnu.idatt2016.v233.SmartMat.entity.user.User;
+import ntnu.idatt2016.v233.SmartMat.service.user.UserService;
+import org.springframework.security.crypto.password.PasswordEncoder;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+
+@AllArgsConstructor
+@RestController
+@RequestMapping("/api/user")
 public class UserController {
+
+    UserService userService;
+
+    PasswordEncoder passwordEncoder;
+
+    /**
+     * Use this JSON format:
+     * {
+     *     "username":"kari123",
+     *     "password":"sjokoladekake",
+     *     "email":"kari.nordman@gmail.com",
+     *     "firstName":"kari",
+     *     "lastName":"nordmann",
+     *     "birthDate":"2001-12-12"
+     * }
+     *
+     * create a new user in the database
+     * uses the user service
+     * @param user The user to be registered.
+     */
+    @PostMapping("/register")
+    public void register(@RequestBody RegisterUser user) {
+
+        if(user.username() == null || user.username().trim().isEmpty() || user.username().length() > 50 ||
+                user.password() == null || user.password().trim().isEmpty() || user.password().length() > 50 ||
+                user.email() == null || user.email().trim().isEmpty() || user.email().length() > 50 ||
+                user.firstName() == null || user.firstName().trim().isEmpty() || user.firstName().length() > 50 ||
+                user.lastName() == null || user.lastName().trim().isEmpty() || user.lastName().length() > 50 ||
+                user.birthDate() == null) {
+            return;
+        }
+
+        if(userService.getUserFromUsername(user.username()).isPresent()) {
+            return;
+        }
+
+        User newUser = User.builder()
+                .authority(Authority.USER)
+                .username(user.username())
+                .password(passwordEncoder.encode(user.password()))
+                .email(user.email())
+                .firstName(user.firstName())
+                .lastName(user.lastName())
+                .dateOfBirth(user.birthDate())
+                .build();
+
+        userService.saveUser(newUser);
+    }
+
+
 }
diff --git a/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/request/RegisterUser.java b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/request/RegisterUser.java
new file mode 100644
index 0000000000000000000000000000000000000000..570d83a76c7db4018e43fd3f17c3142b7f991a0a
--- /dev/null
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/request/RegisterUser.java
@@ -0,0 +1,14 @@
+package ntnu.idatt2016.v233.SmartMat.entity.request;
+
+import java.sql.Date;
+
+/**
+ * RegisterUser is a record class representing a register request.
+ * @param username the username of the user
+ * @param password the password of the user
+ * @param email the email of the user
+ *
+ */
+public record RegisterUser (String username, String password, String email, String firstName, String lastName,
+                            Date birthDate){
+}
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
index 4281de49597bf59f7fea34fa11a7a8b4f00828a6..ca45d9b7802fd5381ff807264c1ddfd03db50aff 100644
--- a/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/user/User.java
+++ b/src/main/java/ntnu/idatt2016/v233/SmartMat/entity/user/User.java
@@ -9,6 +9,7 @@ import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.authority.SimpleGrantedAuthority;
 import org.springframework.security.core.userdetails.UserDetails;
 
+import java.sql.Date;
 import java.util.Collection;
 import java.util.List;
 
@@ -34,6 +35,18 @@ public class User implements UserDetails {
     @Column(name = "enabled")
     private boolean enabled;
 
+    @Column
+    private String email;
+
+    @Column
+    private String firstName;
+
+    @Column(name = "last_name")
+    private String lastName;
+
+    @Column(name = "birthdate")
+    private Date dateOfBirth;
+
     @Enumerated(EnumType.STRING)
     private Authority authority;