diff --git a/src/main/java/com/cb/conf/SpringSecurity.java b/src/main/java/com/cb/conf/SpringSecurity.java index 822e479..fa1210b 100644 --- a/src/main/java/com/cb/conf/SpringSecurity.java +++ b/src/main/java/com/cb/conf/SpringSecurity.java @@ -24,15 +24,15 @@ public class SpringSecurity { http.csrf().disable() .authorizeRequests() .antMatchers("/registration/**").permitAll() - .antMatchers("/login").permitAll() - .antMatchers("/user").hasAnyRole("USER", "ADMIN") - .antMatchers("/admin").hasAnyRole("ADMIN") + .antMatchers("/login/**").permitAll() + .antMatchers("/user/**").hasAnyRole("USER", "ADMIN") + .antMatchers("/admin/**").hasAnyRole("ADMIN") .and() .formLogin( form -> form .loginPage("/login") .loginProcessingUrl("/login") - .defaultSuccessUrl("/user") + .defaultSuccessUrl("/user/") .permitAll() ).logout( logout -> logout diff --git a/src/main/java/com/cb/controller/UserController.java b/src/main/java/com/cb/controller/UserController.java new file mode 100644 index 0000000..e96c281 --- /dev/null +++ b/src/main/java/com/cb/controller/UserController.java @@ -0,0 +1,14 @@ +package com.cb.controller; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + +@Controller +@RequestMapping("/user/") +public class UserController { + @GetMapping("/") + public String registrationForm() { + return "user"; + } +} diff --git a/src/main/java/com/cb/model/Role.java b/src/main/java/com/cb/model/Role.java index abbf98f..92c4e20 100644 --- a/src/main/java/com/cb/model/Role.java +++ b/src/main/java/com/cb/model/Role.java @@ -23,4 +23,8 @@ public class Role { private String name; @ManyToMany(mappedBy = "roles") private List users = new ArrayList<>(); + + public Role(String name) { + this.name = name; + } } diff --git a/src/main/java/com/cb/service/UserServiceImpl.java b/src/main/java/com/cb/service/UserServiceImpl.java index 0b8b3c9..28ac708 100644 --- a/src/main/java/com/cb/service/UserServiceImpl.java +++ b/src/main/java/com/cb/service/UserServiceImpl.java @@ -6,6 +6,7 @@ import com.cb.model.Role; import com.cb.model.User; import com.cb.repository.RoleRepository; import com.cb.repository.UserRepository; +import com.cb.util.TbConstants; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; @@ -28,8 +29,13 @@ public class UserServiceImpl implements UserService { @Override public void saveUser(UserDto userDto) { - Role role = roleRepository.findByName("ROLE_USER"); - User user = new User(userDto.getName(),userDto.getEmail(),passwordEncoder.encode(userDto.getPassword()),Arrays.asList(role)); + Role role = roleRepository.findByName(TbConstants.Roles.USER); + + if (role == null) + role = roleRepository.save(new Role(TbConstants.Roles.USER)); + + User user = new User(userDto.getName(), userDto.getEmail(), passwordEncoder.encode(userDto.getPassword()), + Arrays.asList(role)); userRepository.save(user); } @@ -46,7 +52,7 @@ public class UserServiceImpl implements UserService { .collect(Collectors.toList()); } - private UserDto mapToUserDto(User user){ + private UserDto mapToUserDto(User user) { UserDto userDto = new UserDto(); String[] str = user.getName().split(" "); userDto.setName(str[0]); diff --git a/src/main/java/com/cb/util/TbConstants.java b/src/main/java/com/cb/util/TbConstants.java new file mode 100644 index 0000000..73c52fd --- /dev/null +++ b/src/main/java/com/cb/util/TbConstants.java @@ -0,0 +1,8 @@ +package com.cb.util; + +public class TbConstants { + public static interface Roles { + String USER = "ROLE_USER"; + String ADMIN = "ROLE_ADMIN"; + } +} diff --git a/src/main/resources/templates/login.html b/src/main/resources/templates/login.html index 763beea..cf9d691 100644 --- a/src/main/resources/templates/login.html +++ b/src/main/resources/templates/login.html @@ -6,7 +6,7 @@ - Hello, world! + Login
diff --git a/src/main/resources/templates/user.html b/src/main/resources/templates/user.html new file mode 100644 index 0000000..e980649 --- /dev/null +++ b/src/main/resources/templates/user.html @@ -0,0 +1,30 @@ + + + + + + + + User + + +
+
+
+

User Details

+
Username:
+
Roles:
+ + +
+
+
+ + + + + + \ No newline at end of file