diff --git a/src/main/java/NTNU/IDATT1002/controllers/Login.java b/src/main/java/NTNU/IDATT1002/controllers/Login.java
index 2d3104855ceb322fe5f8c4a4f693cdc0e0f5f183..80a1061306f497f8329f48091c8e7360ae4375c2 100644
--- a/src/main/java/NTNU/IDATT1002/controllers/Login.java
+++ b/src/main/java/NTNU/IDATT1002/controllers/Login.java
@@ -3,8 +3,13 @@ package NTNU.IDATT1002.controllers;
 import java.io.IOException;
 
 import NTNU.IDATT1002.App;
+import NTNU.IDATT1002.ApplicationState;
+import NTNU.IDATT1002.models.User;
+import NTNU.IDATT1002.service.UserService;
 import javafx.event.ActionEvent;
 import javafx.scene.control.Button;
+import javafx.scene.control.PasswordField;
+import javafx.scene.control.TextField;
 
 /**
  * Controls the buttons and changeable elements on login.fxml,
@@ -13,8 +18,12 @@ import javafx.scene.control.Button;
  */
 public class Login {
 
+
+    public TextField Username;
+    public PasswordField Password;
     public Button signup;
     public Button login;
+    private UserService userService;
 
     /**
      * Method that changes scene to Sign Up page
@@ -31,7 +40,12 @@ public class Login {
      * @throws IOException
      */
     public void login(ActionEvent actionEvent) throws IOException {
-        //TODO: Verify username and password
-        App.setRoot("main");
+        userService = new UserService();
+        String username = Username.getText();
+        String password = Password.getText();
+        if(userService.logIn(username, password)); {
+            App.setRoot("main");
+        }
+        //TODO: Else raise warning maybe?
     }
 }
diff --git a/src/main/java/NTNU/IDATT1002/controllers/SignUp.java b/src/main/java/NTNU/IDATT1002/controllers/SignUp.java
index d7acd32db411f7b16d0a35dd59c8995e5b164c5b..2b8cc0eafd54ed287139a02d5e3db0cf0b19b1be 100644
--- a/src/main/java/NTNU/IDATT1002/controllers/SignUp.java
+++ b/src/main/java/NTNU/IDATT1002/controllers/SignUp.java
@@ -1,8 +1,12 @@
 package NTNU.IDATT1002.controllers;
 
 import java.io.IOException;
+import java.util.Date;
+import java.util.Optional;
 
 import NTNU.IDATT1002.App;
+import NTNU.IDATT1002.models.User;
+import NTNU.IDATT1002.service.UserService;
 import javafx.event.ActionEvent;
 import javafx.scene.control.Button;
 import javafx.scene.control.DatePicker;
@@ -26,6 +30,7 @@ public class SignUp {
     public TextField signup_phoneCode;
     public TextField signup_phoneNr;
     public DatePicker signup_birthDate;
+    public UserService userService = new UserService();
 
     public Button signup_btn;
 
@@ -35,8 +40,22 @@ public class SignUp {
      * @throws IOException
      */
     public void signup(ActionEvent actionEvent) throws IOException {
-        //TODO: Verify that all fields is properly filled
-        //TODO: Register new user in database
-        App.setRoot("login");
+        String username = signup_username.getText();
+        String firstName = signup_firstName.getText();
+        String lastName = signup_lastName.getText();
+        String email = signup_email.getText();
+        String password = signup_password.getText();
+        String phoneCode = signup_phoneCode.getText();
+        String phoneNr = signup_phoneNr.getText();
+        //TODO: Find out how to take date as a Date object
+        Date date = new Date(System.currentTimeMillis());
+
+        if(userService.createUser(email, username, firstName, lastName, phoneCode, phoneNr, date, password).isPresent()) {
+            //TODO: Return message to user to confirm that user has been succsessfully registered
+            App.setRoot("login");
+        }
+
+
+        //TODO: Verify that all fields is properly filled. I think this will be done by Usermodel.
     }
-}
\ No newline at end of file
+}
diff --git a/src/main/java/NTNU/IDATT1002/models/Login.java b/src/main/java/NTNU/IDATT1002/models/Login.java
index 6d196fb58d538e75bea81468fd2e06b07cd6d177..00e7c3f03ed5e51c7a0023d27062e97586bd81eb 100644
--- a/src/main/java/NTNU/IDATT1002/models/Login.java
+++ b/src/main/java/NTNU/IDATT1002/models/Login.java
@@ -39,6 +39,10 @@ public class Login {
         return user;
     }
 
+    public void setUser(User user) {
+        this.user = user;
+    }
+
     public void setHash(String hash) {
         this.hash = hash;
     }
diff --git a/src/main/java/NTNU/IDATT1002/repository/LoginRepository.java b/src/main/java/NTNU/IDATT1002/repository/LoginRepository.java
index 4dbb2c5434b130f8dc0eceb0f35e131bfa8f6452..75e715520087e2dca53a2c9c8d43f03e0ec77270 100644
--- a/src/main/java/NTNU/IDATT1002/repository/LoginRepository.java
+++ b/src/main/java/NTNU/IDATT1002/repository/LoginRepository.java
@@ -38,87 +38,4 @@ public class LoginRepository extends GenericRepository<Login, String>{
         super(entityManager);
         setClassType(Login.class);
     }
-
-    /**
-     * Logs a user into the sytem
-     *
-     * @param username of user that should login
-     * @param password of the user that should login
-     * @return boolean of the operation
-     */
-    public boolean logIn(String username, String password) {
-        try {
-            Optional<Login> login = findById(username);
-            if(login.isPresent()) {
-                String salt = login.get().getPasswordSalt();
-                String expectedHash = login.get().getHash();
-                return Authentication.isCorrectPassword(salt, password, expectedHash);
-            }
-        }
-        catch (IllegalArgumentException e) {
-            e.printStackTrace();
-        }
-        return false;
-    }
-
-    /**
-     * Checks the old password on the user and changes to the new password if the old is correct
-     *
-     * @param username of the user that want to change password
-     * @param oldPassword that will be checked to the database
-     * @param newPassword that will be changed to
-     * @return boolean of the operation
-     */
-
-    public boolean changePassword(String username, String oldPassword, String newPassword) {
-        ArrayList<String> info = new ArrayList<>();
-        try {
-            Optional<Login> login = findById(username);
-            if(login.isPresent()) {
-                String salt = login.get().getPasswordSalt();
-                String expectedHash = login.get().getHash();
-                if(Authentication.isCorrectPassword(salt, oldPassword, expectedHash)) {
-                    info = Authentication.setPassword(newPassword);
-                    String saltString = info.get(0);
-                    String hashString = info.get(1);
-                    login.get().setPasswordSalt(saltString);
-                    login.get().setHash(hashString);
-
-                    save(login.get());
-                    return true;
-                }
-            }
-        } catch (IllegalArgumentException e) {
-            e.printStackTrace();
-        }
-        return false;
-    }
-
-    /**
-     * Method for setting the password on the user for the first time
-     *
-     * @param username of the user that will have the password set
-     * @param password password that will be set
-     * @return
-     */
-    public boolean setPassword(String username, String password) {
-        ArrayList<String> info = new ArrayList<>();
-        try {
-            Optional<Login> login = findById(username);
-            if(login.isPresent()) {
-                info = Authentication.setPassword(password);
-                String saltString = info.get(0);
-                String hastString = info.get(1);
-                login.get().setPasswordSalt(saltString);
-                login.get().setHash(hastString);
-
-                save(login.get());
-                return true;
-            }
-        }
-        catch (IllegalArgumentException e) {
-            e.printStackTrace();
-        }
-        return false;
-    }
 }
\ No newline at end of file
diff --git a/src/main/java/NTNU/IDATT1002/service/UserService.java b/src/main/java/NTNU/IDATT1002/service/UserService.java
index 5abdfb03044a56fdce4a9ac645e9a4ae530cea77..e14166e242b46f8ff208914ec753f484743da50b 100644
--- a/src/main/java/NTNU/IDATT1002/service/UserService.java
+++ b/src/main/java/NTNU/IDATT1002/service/UserService.java
@@ -1,14 +1,18 @@
 package NTNU.IDATT1002.service;
 
+import NTNU.IDATT1002.App;
 import NTNU.IDATT1002.ApplicationState;
 import NTNU.IDATT1002.models.Login;
 import NTNU.IDATT1002.models.User;
 import NTNU.IDATT1002.repository.LoginRepository;
 import NTNU.IDATT1002.repository.UserRepository;
+import NTNU.IDATT1002.utils.Authentication;
+import org.apache.log4j.helpers.AbsoluteTimeDateFormat;
 
 import javax.persistence.EntityManager;
 import javax.persistence.EntityManagerFactory;
 import javax.persistence.Persistence;
+import java.util.ArrayList;
 import java.util.Date;
 import java.util.Optional;
 
@@ -48,12 +52,9 @@ public class UserService {
      * @return Optional with the user
      */
     public Optional<User> createUser(String email, String username, String firstName, String lastName, String callingCode, String phoneNumber, Date birthDate, String password) {
-        User user = new User(email, username, firstName, lastName, callingCode, phoneNumber, birthDate);
+        User user = new User(username, email, firstName, lastName, callingCode, phoneNumber, birthDate);
         Login login = new Login(user, "", "");
-        userRepository.save(user);
-        loginRepository.save(login);
-        loginRepository.setPassword(username, password);
-
+        setPassword(login, password);
         return userRepository.save(user);
     }
 
@@ -65,10 +66,19 @@ public class UserService {
      * @return
      */
     public boolean logIn(String username, String password) {
-        if(loginRepository.logIn(username, password)) {
-            User user = loginRepository.findById(username).get().getUser();
-            ApplicationState.setCurrentUser(user);
-            return true;
+        try {
+            Optional<Login> login = loginRepository.findById(username);
+            if (login.isPresent()) {
+                String salt = login.get().getPasswordSalt();
+                String hash = login.get().getHash();
+                if(Authentication.isCorrectPassword(salt, password, hash)) {
+                    ApplicationState.setCurrentUser(login.get().getUser());
+                    return true;
+                }
+            }
+        }
+        catch (IllegalArgumentException e) {
+            e.printStackTrace();
         }
         return false;
     }
@@ -81,7 +91,46 @@ public class UserService {
      * @param newPassword that will be set
      * @return
      */
-    public boolean changePassword(String username, String oldPassword, String newPassword) {
-        return loginRepository.changePassword(username, oldPassword, newPassword);
+    boolean changePassword(String username, String oldPassword, String newPassword) {
+        ArrayList<String> info = new ArrayList<>();
+        try {
+            Optional<Login> login = loginRepository.findById(username);
+            if(login.isPresent()) {
+                String salt = login.get().getPasswordSalt();
+                String expectedHash = login.get().getHash();
+                if(Authentication.isCorrectPassword(salt, oldPassword,expectedHash)) {
+                    info = Authentication.setPassword(newPassword);
+                    String saltString = info.get(0);
+                    String hashString = info.get(1);
+                    login.get().setPasswordSalt(saltString);
+                    login.get().setHash(hashString);
+
+                    loginRepository.save(login.get());
+                    return true;
+                }
+            }
+        }
+        catch (IllegalArgumentException e) {
+            e.printStackTrace();
+         }
+        return false;
+    }
+
+    private boolean setPassword(Login login, String password) {
+        ArrayList<String> info = new ArrayList<>();
+        try {
+             info = Authentication.setPassword(password);
+             String saltString = info.get(0);
+             String hashString = info.get(1);
+             login.setPasswordSalt(saltString);
+             login.setHash(hashString);
+             if(loginRepository.save(login).isPresent()) {
+                 return true;
+             }
+        }
+        catch (IllegalArgumentException e) {
+            e.printStackTrace();
+        }
+        return false;
     }
 }
diff --git a/src/main/resources/Images/Sequences/Login.png b/src/main/resources/Images/Sequences/Login.png
new file mode 100644
index 0000000000000000000000000000000000000000..ce5192508b0cad2c58c552416483b9639029670b
Binary files /dev/null and b/src/main/resources/Images/Sequences/Login.png differ
diff --git a/src/main/resources/Images/Sequences/SignUp.png b/src/main/resources/Images/Sequences/SignUp.png
new file mode 100644
index 0000000000000000000000000000000000000000..a0cd18708f2c63e322e654375b34e5a2eb915dfc
Binary files /dev/null and b/src/main/resources/Images/Sequences/SignUp.png differ
diff --git a/src/main/resources/NTNU/IDATT1002/login.fxml b/src/main/resources/NTNU/IDATT1002/login.fxml
index 58007fade7e876212ac13b077a597ff56f5e6c63..0db357e7ccbc8ca4c404b334ab2823123d9d1a9a 100644
--- a/src/main/resources/NTNU/IDATT1002/login.fxml
+++ b/src/main/resources/NTNU/IDATT1002/login.fxml
@@ -27,8 +27,8 @@
          <children>
             <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Username:" GridPane.halignment="RIGHT" />
             <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Password:" GridPane.halignment="RIGHT" GridPane.rowIndex="1" />
-            <TextField GridPane.columnIndex="1" />
-            <PasswordField GridPane.columnIndex="1" GridPane.rowIndex="1" />
+            <TextField fx:id="Username" GridPane.columnIndex="1" />
+            <PasswordField fx:id="Password" GridPane.columnIndex="1" GridPane.rowIndex="1" />
             <Button fx:id="signup" onAction="#switchToSignup" text="Sign Up" GridPane.columnIndex="1" GridPane.halignment="RIGHT" GridPane.rowIndex="2" />
             <Button fx:id="login" onAction="#login" layoutX="171.0" layoutY="74.0" text="Log In" GridPane.columnIndex="1" GridPane.halignment="LEFT" GridPane.rowIndex="2" />
          </children>
diff --git a/src/test/java/NTNU/IDATT1002/repository/LoginRepositoryTest.java b/src/test/java/NTNU/IDATT1002/repository/LoginRepositoryTest.java
index ab6bf487b89730c021003dbb0f519d82e11fc28d..2cd3f835e6a1c7f1cdaef195e242cc2e8c3339a4 100644
--- a/src/test/java/NTNU/IDATT1002/repository/LoginRepositoryTest.java
+++ b/src/test/java/NTNU/IDATT1002/repository/LoginRepositoryTest.java
@@ -1,3 +1,4 @@
+
 package NTNU.IDATT1002.repository;
 
 import NTNU.IDATT1002.models.Login;
@@ -16,6 +17,7 @@ import java.util.Optional;
 
 import static org.junit.jupiter.api.Assertions.*;
 
+
 /**
  * Tests for {@link LoginRepository}
  *
@@ -23,6 +25,7 @@ import static org.junit.jupiter.api.Assertions.*;
  * @version 1.0 17.03.20
  */
 
+
 class LoginRepositoryTest {
 
 
@@ -39,10 +42,12 @@ class LoginRepositoryTest {
     private Login login2;
 
 
-    /**
+
+/**
      * Sets up some testdata for thorough testing
      * So much information has been added for making sure every part works as intended
      */
+
     @BeforeEach
     public void setUp() {
         EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("ImageApplicationTest");
@@ -60,18 +65,22 @@ class LoginRepositoryTest {
         login2 = new Login(user2, "test2", "test2");
     }
 
-    /**
+
+/**
      * Test that saving an entity returns the saved instance
      */
+
     @Test
     void testSaveReturnsInstance() {
         Optional<Login> optionalLogin = loginRepository.save(login1);
         assertTrue(optionalLogin.isPresent());
     }
 
-    /**
+
+/**
      * Test that finding all entities returns all entities
      */
+
     @Test
     void testSaveReturnsAllSavedEntities() {
 
@@ -82,9 +91,11 @@ class LoginRepositoryTest {
         assertEquals(2, foundLogins.size());
     }
 
-    /**
+
+/**
      * Test that saving invalid entity will fail and return empty optional
      */
+
     @Test
     void testSaveInvalidEntityReturnsEmptyOptional() {
         Optional<Login> savedLogin = loginRepository.save(null);
@@ -92,9 +103,11 @@ class LoginRepositoryTest {
         assertTrue(savedLogin.isEmpty());
     }
 
-    /**
+
+/**
      * Test that finding entity by id returns optional with the correct id
      */
+
     @Test
     void testFindByIdReturnsOptionalWithEntityWithId() {
 
@@ -105,7 +118,7 @@ class LoginRepositoryTest {
         assertEquals(username1, foundLogins.get().getUser().getUsername());
     }
 
-    /**
+/**
      * Test that deleting by id removes the given entity and returns empty optional
      */
     @Test
@@ -119,9 +132,10 @@ class LoginRepositoryTest {
         assertTrue(deletedLogin.isEmpty());
     }
 
-    /**
+/**
      * Test that count returns correct amount of enities
      */
+
     @Test
     void testCountReturnsAmountOfSavedEntities() {
         loginRepository.save(login1);
@@ -131,101 +145,4 @@ class LoginRepositoryTest {
 
         assertEquals(2, loginCount);
     }
-
-    /**
-     * Test that a created user can log in
-     */
-    @Test
-    void testLogin() {
-        ArrayList<String> credentials = Authentication.setPassword(password);
-        String salt = credentials.get(0);
-        String hash = credentials.get(1);
-        Login login3 = new Login(user1, salt, hash);
-        loginRepository.save(login3);
-
-        assertTrue(loginRepository.logIn(username1, password));
-    }
-
-    /**
-     * Test that a created user can change the password
-     */
-    @Test
-    void testChangePassword() {
-        ArrayList<String> credentials = Authentication.setPassword(password);
-        String salt = credentials.get(0);
-        String hash = credentials.get(1);
-        Login login3 = new Login(user1, salt, hash);
-        loginRepository.save(login3);
-
-        assertTrue(loginRepository.changePassword(username1, password, newPassword));
-    }
-
-    /**
-     * Test that a user can log in, change password then log in again
-     */
-    @Test
-    void testLoginWithNewPassword() {
-        ArrayList<String> credentials = Authentication.setPassword(password);
-        String salt = credentials.get(0);
-        String hash = credentials.get(1);
-        Login login3 = new Login(user1, salt, hash);
-        loginRepository.save(login3);
-
-        assertTrue(loginRepository.logIn(username1, password));
-        assertTrue(loginRepository.changePassword(username1, password, newPassword));
-        assertTrue(loginRepository.logIn(username1, newPassword));
-    }
-
-    /**
-     * Test that trying to login with wrong password returns false
-     */
-    @Test
-    void testWrongPasswordDoesNotLogIn() {
-        ArrayList<String> credentials = Authentication.setPassword(password);
-        String salt = credentials.get(0);
-        String hash = credentials.get(1);
-        Login login3 = new Login(user1, salt, hash);
-        loginRepository.save(login3);
-        assertFalse(loginRepository.logIn(username1, newPassword));
-    }
-
-    /**
-     * Test that trying to change password with wrong password returns false
-     */
-    @Test
-    void testWrongPasswordDoesNotChangePassword() {
-        ArrayList<String> credentials = Authentication.setPassword(password);
-        String salt = credentials.get(0);
-        String hash = credentials.get(1);
-        Login login3 = new Login(user1, salt, hash);
-        loginRepository.save(login3);
-        assertFalse(loginRepository.changePassword(username1, newPassword, password));
-        assertTrue(loginRepository.logIn(username1, password));
-    }
-
-    /**
-     * Test that trying to login with null returns false
-     */
-    @Test
-    void testLoginWithNullReturnsFalse() {
-        ArrayList<String> credentials = Authentication.setPassword(password);
-        String salt = credentials.get(0);
-        String hash = credentials.get(1);
-        Login login3 = new Login(user1, salt, hash);
-        loginRepository.save(login3);
-        assertFalse(loginRepository.logIn(username1, null));
-    }
-
-    /**
-     * Test that trying to login with null returns false
-     */
-    @Test
-    void testChangeWithNullReturnsFalse() {
-        ArrayList<String> credentials = Authentication.setPassword(password);
-        String salt = credentials.get(0);
-        String hash = credentials.get(1);
-        Login login3 = new Login(user1, salt, hash);
-        loginRepository.save(login3);
-        assertFalse(loginRepository.changePassword(username1, null, newPassword));
-    }
-}
\ No newline at end of file
+}
diff --git a/src/test/java/NTNU/IDATT1002/service/UserServiceTest.java b/src/test/java/NTNU/IDATT1002/service/UserServiceTest.java
deleted file mode 100644
index f4f9e521aa1b45827172f12b7f88fb251757893d..0000000000000000000000000000000000000000
--- a/src/test/java/NTNU/IDATT1002/service/UserServiceTest.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package NTNU.IDATT1002.service;
-
-import NTNU.IDATT1002.models.User;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-import javax.validation.constraints.AssertTrue;
-import java.lang.management.OperatingSystemMXBean;
-import java.util.Date;
-import java.util.Optional;
-
-import static org.junit.jupiter.api.Assertions.*;
-
-class UserServiceTest {
-
-  private UserService userService;
-  private String email;
-  private String username;
-  private String firstName;
-  private String lastName;
-  private String phoneNumber;
-  private String callingCode;
-  private String password;
-  private Date date;
-
-  @BeforeEach
-  void setUp() {
-     userService = new UserService();
-     email = "email";
-     username = "test";
-     firstName = "test";
-     lastName = "testesen";
-     phoneNumber = "12345678";
-     callingCode = "+47";
-     password = "Test123";
-     date = new Date(System.currentTimeMillis());
-  }
-
-  @Test
-  void testCreateuser() {
-  Optional<User> user = userService.createUser(email, username, firstName, lastName, callingCode, phoneNumber, date, password);
-  assertTrue(user.isPresent());
-  assertEquals(username, user.get().getUsername());
-  }
-
-  @Test
-  void testChangePassword() {
-    String newPassword = "Test321";
-    Optional<User> user = userService.createUser(email, username, firstName, lastName, callingCode, phoneNumber, date, password);
-    assertTrue(user.isPresent());
-    assertTrue(userService.changePassword(username, password, newPassword));
-  }
-
-  @Test
-  void testLogIn() {
-    Optional<User> user = userService.createUser(email, username, firstName, lastName, callingCode, phoneNumber, date, password);
-    assertTrue(user.isPresent());
-    assertTrue(userService.logIn(username, password));
-  }
-}
\ No newline at end of file