diff --git a/src/main/java/edu/msudenver/tsp/website/Application.java b/src/main/java/edu/msudenver/tsp/website/Application.java index 1b826ed..1c542a7 100644 --- a/src/main/java/edu/msudenver/tsp/website/Application.java +++ b/src/main/java/edu/msudenver/tsp/website/Application.java @@ -6,11 +6,10 @@ import org.springframework.context.annotation.ComponentScan; @SpringBootApplication @ComponentScan("edu.msudenver.tsp") - public class Application { - public static void main(String[] args) { + public static void main(final String[] args) { SpringApplication.run(Application.class, args); } diff --git a/src/main/java/edu/msudenver/tsp/website/controller/UserCreationController.java b/src/main/java/edu/msudenver/tsp/website/controller/UserCreationController.java new file mode 100644 index 0000000..5385548 --- /dev/null +++ b/src/main/java/edu/msudenver/tsp/website/controller/UserCreationController.java @@ -0,0 +1,46 @@ +package edu.msudenver.tsp.website.controller; + +import edu.msudenver.tsp.services.UserService; +import edu.msudenver.tsp.services.dto.Account; +import edu.msudenver.tsp.website.forms.UserCreationForm; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.servlet.ModelAndView; + +@Slf4j +@Controller +@AllArgsConstructor +@RequestMapping("/registration") +public class UserCreationController { + @Autowired + private final UserService userService; + + @GetMapping({"/",""}) + public ModelAndView createUserPage() { + LOG.info("Received request to display the user creation page: returning model with name 'User'"); + return new ModelAndView("User"); + } + + @PostMapping({"/",""}) + public String registerUser(@Validated final UserCreationForm userCreationForm, final Model model) { + model.addAttribute("username", userCreationForm.getUsername()); + model.addAttribute("password", userCreationForm.getPassword()); + model.addAttribute("emailAddress", userCreationForm.getEmailAddress()); + + LOG.info("Saving user {}...", userCreationForm); + + final Account newUser = new Account(); + newUser.setUsername(userCreationForm.getUsername()); + newUser.setPassword(userCreationForm.getPassword()); + userService.createAccount(newUser); + + return "successfulRegistration"; + } +} diff --git a/src/main/java/edu/msudenver/tsp/website/forms/UserCreationForm.java b/src/main/java/edu/msudenver/tsp/website/forms/UserCreationForm.java new file mode 100644 index 0000000..ec7f132 --- /dev/null +++ b/src/main/java/edu/msudenver/tsp/website/forms/UserCreationForm.java @@ -0,0 +1,30 @@ +package edu.msudenver.tsp.website.forms; + +import lombok.Getter; +import lombok.Setter; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; + +@Getter +@Setter +public class UserCreationForm { + @NotNull + @NotEmpty + private String username; + + @NotNull + @NotEmpty + private String password; + + @NotNull + @NotEmpty + private String confirmPassword; + + @NotNull + @NotEmpty + private String emailAddress; + + @NotNull + private boolean agreedToTerms; +} diff --git a/src/main/webapp/WEB-INF/jsp/User.jsp b/src/main/webapp/WEB-INF/jsp/User.jsp new file mode 100644 index 0000000..08c6794 --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/User.jsp @@ -0,0 +1,147 @@ +<%@ taglib prefix="th" uri="http://www.springframework.org/tags/form" %> +<%@ page contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> + + + + + User Creation + + + + + + New User Registration: +
+ +
+ +
+ +
+ +
+ +
+ +
+ + \ No newline at end of file diff --git a/src/main/webapp/WEB-INF/jsp/index.jsp b/src/main/webapp/WEB-INF/jsp/index.jsp index 7ee4c24..a4be98c 100644 --- a/src/main/webapp/WEB-INF/jsp/index.jsp +++ b/src/main/webapp/WEB-INF/jsp/index.jsp @@ -41,6 +41,7 @@ Click on this link to visit theorem ent Click on this link to visit theorem entering page.

Sign In

+

New here? Register

diff --git a/src/main/webapp/WEB-INF/jsp/successfulRegistration.jsp b/src/main/webapp/WEB-INF/jsp/successfulRegistration.jsp new file mode 100644 index 0000000..19c7eaf --- /dev/null +++ b/src/main/webapp/WEB-INF/jsp/successfulRegistration.jsp @@ -0,0 +1,13 @@ +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + You're Registered! + + + Thank you for joining! +
Username: <%= request.getParameter("username")%> +
Email Address: <%= request.getParameter("emailAddress")%> + +
Return Home + + diff --git a/src/test/java/edu/msudenver/tsp/website/controller/UserCreationControllerTest.java b/src/test/java/edu/msudenver/tsp/website/controller/UserCreationControllerTest.java new file mode 100644 index 0000000..b28167f --- /dev/null +++ b/src/test/java/edu/msudenver/tsp/website/controller/UserCreationControllerTest.java @@ -0,0 +1,26 @@ +package edu.msudenver.tsp.website.controller; + +import edu.msudenver.tsp.services.UserService; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.runners.MockitoJUnitRunner; +import org.springframework.web.servlet.ModelAndView; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.mockito.Mockito.mock; + +@RunWith(MockitoJUnitRunner.class) +public class UserCreationControllerTest { + + private final UserService userService = mock(UserService.class); + private final UserCreationController userCreationController = new UserCreationController(userService); + + @Test + public void testCreateUserPage() { + final ModelAndView modelAndView = userCreationController.createUserPage(); + + assertNotNull(modelAndView); + assertEquals("User", modelAndView.getViewName()); + } +} \ No newline at end of file