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>