diff --git a/src/main/java/Team5/SmartTowns/users/UserController.java b/src/main/java/Team5/SmartTowns/users/UserController.java
index 7c5ace9cf5ab2475fced12e915d29967627dc3dd..40fd1f345ee52a03fdaf24975025231340654533 100644
--- a/src/main/java/Team5/SmartTowns/users/UserController.java
+++ b/src/main/java/Team5/SmartTowns/users/UserController.java
@@ -6,7 +6,7 @@ import Team5.SmartTowns.rewards.RewardsRepository;
 import Team5.SmartTowns.rewards.Sticker;
 import jakarta.validation.Valid;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.Banner;
+import org.springframework.dao.DataAccessException;
 import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.security.core.userdetails.User;
 import org.springframework.stereotype.Controller;
@@ -31,41 +31,58 @@ public class UserController {
     public ModelAndView getLoginPage() {
         ModelAndView mav = new ModelAndView("users/login");
         mav.addObject("user", new NewUser( "", "", ""));
+        mav.addObject("error", "");
+        mav.addObject("status", "");
         System.out.println(userRepository.findUserByName("Admin").getName());
         return mav;
     }
 
-    @GetMapping("/logout")
-    public ModelAndView getLogOutPage(){
-        ModelAndView mav = new ModelAndView("users/logout");
-        return mav;
-    }
+//    @GetMapping("/logout")
+//    public ModelAndView getLogOutPage(){
+//        ModelAndView mav = new ModelAndView("users/logout");
+//        return mav;
+//    }
 
     @PostMapping("/login/register")
     public ModelAndView registerUser(@Valid @ModelAttribute("user") NewUser user, BindingResult bindingResult, Model model) {
         ModelAndView mav = new ModelAndView("users/login", model.asMap());
         // TODO VALIDATE EMAIL INPUT
-
+        mav.addObject("status", "active");
         if (bindingResult.hasErrors()) {
             ModelAndView modelAndView = new ModelAndView("users/login");
             modelAndView.addObject("errors", bindingResult);
             return modelAndView;
         }
-        System.out.println(user.getName());
-        System.out.println(user.getPassword());
-
 
         if ( userRepository.doesUserExist(user.getEmail()) ) {
-            //TODO return modelandview for user already exists
-            System.out.println(user.getEmail() + " already exists");
+            mav.addObject("errors", "Email already in use");
             return mav;
-        } else {
+        }
+
+        try {
             userRepository.addUser(user.name, user.email, user.password);
-            System.out.println(user.getEmail() + " created");
+            mav.addObject("error", "");
+            //TODO return user creation success
             return mav;
+        } catch (DataAccessException e) {
+            mav.addObject("error", "User exists");
         }
+        return mav;
     }
 
+    @GetMapping("/userProfile")
+    public ModelAndView userProfile(){
+        ModelAndView mav = new ModelAndView("users/userProfile");
+        List<Pack> allPacks = rewardsRepository.getAllPacks();
+        mav.addObject("packs", allPacks);
+
+        User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
+        mav.addObject("user", userRepository.findUserByName("Admin"));
+        mav.addAllObjects(getPackInfo("Admin", 1).getModelMap());
+        return mav;
+    }
+
+
     /* USER MAPPING & FUNCTIONS */
     @GetMapping("/profile/{username}")
     public ModelAndView getUserPage(@PathVariable String username) {
diff --git a/src/main/java/Team5/SmartTowns/users/UserRepositoryJDBC.java b/src/main/java/Team5/SmartTowns/users/UserRepositoryJDBC.java
index 7f03157424f48940ae991841f861792c8a070d33..a4ea02d6fde658ce1478cd180f954203ac756a6e 100644
--- a/src/main/java/Team5/SmartTowns/users/UserRepositoryJDBC.java
+++ b/src/main/java/Team5/SmartTowns/users/UserRepositoryJDBC.java
@@ -1,6 +1,7 @@
 //Implements the users repository using JDBC
 package Team5.SmartTowns.users;
 
+import org.springframework.dao.DataAccessException;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.jdbc.core.RowMapper;
 import org.springframework.jdbc.object.SqlQuery;
@@ -59,7 +60,7 @@ public class UserRepositoryJDBC implements UserRepository{
     }
 
     @Override
-    public boolean addUser(String username, String email, String password){
+    public boolean addUser(String username, String email, String password) throws DataAccessException{
         /* Adds new user to the database */
         String query = "INSERT INTO users (username, email, password) VALUES (?, ?, ?);";
         String query2= "INSERT INTO authorities (username, authority) VALUES (?,?);";
diff --git a/src/main/resources/templates/users/login.html b/src/main/resources/templates/users/login.html
index d134eff130f4fc3867f77f0cd33457e7d29a8992..66ca9a64cea5f9d24382df3f143a84879259af96 100644
--- a/src/main/resources/templates/users/login.html
+++ b/src/main/resources/templates/users/login.html
@@ -16,10 +16,12 @@
 <main>
     <!--CODE MODIFIED FROM: https://github.com/AsmrProg-YT/Modern-Login -->
 
-        <div class="container" id="container">
+        <div class="container" th:classappend="${status}" id="container">
             <div class="form-container sign-up">
                 <h1 class="form-title">Create Account</h1>
                 <form th:object="${user}" action="#" th:action="@{/login/register}" th:method="POST" onsubmit="return registerFormValidation()">
+                    <h1>Create Account</h1>
+                    <div th:if="${error.equals('User exists')}" class="alert alert-error">User already exist</div>
                     <label>
                         <input class="input" th:field="*{name}" id="register-username" type="text" placeholder="Name">
                     </label>