diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..27d7d9d --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,22 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + + { + "type": "java", + "name": "Current File", + "request": "launch", + "mainClass": "${file}" + }, + { + "type": "java", + "name": "FuzzyControllerApplication", + "request": "launch", + "mainClass": "ru.ulstu.fc.FuzzyControllerApplication", + "projectName": "fuzzy-controller" + } + ] +} \ No newline at end of file diff --git a/src/main/java/ru/ulstu/fc/config/SecurityConfiguration.java b/src/main/java/ru/ulstu/fc/config/SecurityConfiguration.java index 6583cd0..7547aaa 100644 --- a/src/main/java/ru/ulstu/fc/config/SecurityConfiguration.java +++ b/src/main/java/ru/ulstu/fc/config/SecurityConfiguration.java @@ -14,11 +14,10 @@ import ru.ulstu.fc.user.model.UserRoleConstants; @Configuration @EnableWebSecurity -@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true) public class SecurityConfiguration { private final Logger log = LoggerFactory.getLogger(SecurityConfiguration.class); private final String[] permittedUrls = new String[]{ - "/login", "/index", + "/login", "/index", "/user/register", "/public/**", "/organizers", "/webjars/**", "/h2-console/*", "/h2-console", "/css/**", "/js/**", "/img/**", diff --git a/src/main/java/ru/ulstu/fc/user/controller/UserController.java b/src/main/java/ru/ulstu/fc/user/controller/UserController.java new file mode 100644 index 0000000..97fe0d6 --- /dev/null +++ b/src/main/java/ru/ulstu/fc/user/controller/UserController.java @@ -0,0 +1,42 @@ +package ru.ulstu.fc.user.controller; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.Errors; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.context.request.WebRequest; +import org.springframework.web.servlet.ModelAndView; + +import jakarta.servlet.http.HttpServletRequest; +import jakarta.validation.Valid; +import ru.ulstu.fc.user.model.User; +import ru.ulstu.fc.user.model.UserDto; +import ru.ulstu.fc.user.service.UserService; + +@Controller +public class UserController { + private final UserService userService; + + public UserController(UserService userService) { + this.userService = userService; + } + + @GetMapping("/user/register") + public String showRegistrationForm(WebRequest request, Model model) { + UserDto userDto = new UserDto(); + model.addAttribute("user", userDto); + return "register"; + } + + @PostMapping("/user/register") + public String registerUserAccount( + @ModelAttribute("user") @Valid UserDto userDto, + HttpServletRequest request, + Errors errors) { + + userService.createUser(new User(userDto)); + return "redirect:/login"; + } +} diff --git a/src/main/java/ru/ulstu/fc/user/model/User.java b/src/main/java/ru/ulstu/fc/user/model/User.java index 11b3162..1c81271 100644 --- a/src/main/java/ru/ulstu/fc/user/model/User.java +++ b/src/main/java/ru/ulstu/fc/user/model/User.java @@ -6,6 +6,7 @@ import jakarta.persistence.JoinColumn; import jakarta.persistence.JoinTable; import jakarta.persistence.ManyToMany; import jakarta.persistence.Table; +import jakarta.validation.Valid; import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Pattern; import jakarta.validation.constraints.Size; @@ -46,6 +47,11 @@ public class User extends BaseEntity { this.roles = roles; } + public User(UserDto userDto) { + this.login = userDto.getLogin(); + this.password = userDto.getPassword(); + } + public String getLogin() { return login; } diff --git a/src/main/java/ru/ulstu/fc/user/model/UserDto.java b/src/main/java/ru/ulstu/fc/user/model/UserDto.java new file mode 100644 index 0000000..0a7e064 --- /dev/null +++ b/src/main/java/ru/ulstu/fc/user/model/UserDto.java @@ -0,0 +1,40 @@ +package ru.ulstu.fc.user.model; + +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; + +public class UserDto { + @NotNull + @NotEmpty + private String login; + + @NotNull + @NotEmpty + private String password; + private String matchingPassword; + + public String getLogin() { + return login; + } + + public void setLogin(String login) { + this.login = login; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getMatchingPassword() { + return matchingPassword; + } + + public void setMatchingPassword(String matchingPassword) { + this.matchingPassword = matchingPassword; + } + +} diff --git a/src/main/resources/templates/register.html b/src/main/resources/templates/register.html new file mode 100644 index 0000000..a56d912 --- /dev/null +++ b/src/main/resources/templates/register.html @@ -0,0 +1,27 @@ + + +