diff --git a/src/main/java/demo/api/config/SecurityConfig.java b/src/main/java/demo/api/config/SecurityConfig.java index c47f818..a0f3adf 100644 --- a/src/main/java/demo/api/config/SecurityConfig.java +++ b/src/main/java/demo/api/config/SecurityConfig.java @@ -11,9 +11,6 @@ import org.springframework.security.config.annotation.authentication.configurati import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.http.SessionCreationPolicy; -import org.springframework.security.core.Authentication; -import org.springframework.security.core.AuthenticationException; -import org.springframework.security.core.userdetails.UserDetailsService; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.web.SecurityFilterChain; diff --git a/src/main/java/demo/api/user/UserController.java b/src/main/java/demo/api/user/UserController.java index eeb7f2a..f38a8ec 100644 --- a/src/main/java/demo/api/user/UserController.java +++ b/src/main/java/demo/api/user/UserController.java @@ -11,6 +11,7 @@ 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.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -37,6 +38,15 @@ public class UserController { return "user/profile"; } + @GetMapping("/profile/{username}") + public String userProfile(Model model, @PathVariable String username) { + User user = userService.findByName(username) + .orElseThrow(() -> new UserNotFoundException()); + model.addAttribute("userDetail", user); + + return "user/profile"; + } + @GetMapping("/userList") public String showUserList(Model model) { List userList = userService.findAll(); diff --git a/src/main/java/demo/api/user/UserService.java b/src/main/java/demo/api/user/UserService.java index 1e42a4b..c7006c2 100644 --- a/src/main/java/demo/api/user/UserService.java +++ b/src/main/java/demo/api/user/UserService.java @@ -19,6 +19,19 @@ public interface UserService { */ Optional findByEmail(String email); + /** + * 이름을 통해 유저 조회 + * @param name + * @return 조회된 유저 + */ + Optional findByName(String name); + +// /** +// * Security Context에 존재하는 인증 정보를 통해 유저 정보 조회 +// * @return 조회된 유저 +// */ +// Optional getMyInfo(); + /** * 유저 정보 수정 * @param user 수정활 User Entity diff --git a/src/main/java/demo/api/user/UserServiceImpl.java b/src/main/java/demo/api/user/UserServiceImpl.java index 5998c7c..7e48e49 100644 --- a/src/main/java/demo/api/user/UserServiceImpl.java +++ b/src/main/java/demo/api/user/UserServiceImpl.java @@ -5,8 +5,13 @@ import demo.api.user.repository.UserRepository; import java.util.List; import java.util.Optional; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UserDetails; import org.springframework.stereotype.Service; +@Slf4j @Service @RequiredArgsConstructor public class UserServiceImpl implements UserService { @@ -22,6 +27,31 @@ public class UserServiceImpl implements UserService { return userRepository.findByEmail(email); } + @Override + public Optional findByName(String name) { + return userRepository.findByName(name); + } + +// @Override +// public Optional getMyInfo() { +// Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); +// String username = null; +// +// if (authentication == null) { +// log.debug("Security Context에 인증 정보가 없습니다."); +// return Optional.empty(); +// } +// +// if (authentication.getPrincipal() instanceof UserDetails) { +// UserDetails springSecurityUserInfo = (UserDetails) authentication.getPrincipal(); +// username = springSecurityUserInfo.getUsername(); +// } else if (authentication.getPrincipal() instanceof String) { +// username = (String) authentication.getPrincipal(); +// } +// +// return Optional.ofNullable(userRepository.findByName(username).orElse(null)); +// } + @Override public User updateUser(User user, String newInfo) { return null; diff --git a/src/main/java/demo/api/user/repository/UserRepository.java b/src/main/java/demo/api/user/repository/UserRepository.java index f2b8a09..bbf8633 100644 --- a/src/main/java/demo/api/user/repository/UserRepository.java +++ b/src/main/java/demo/api/user/repository/UserRepository.java @@ -10,6 +10,8 @@ public interface UserRepository extends JpaRepository { Optional findByEmail(String email); + Optional findByName(String name); + /** * 이메일 중복 여부를 확인 *