diff --git a/src/main/java/com/itn/admin/cmn/config/CustomUserDetailsService.java b/src/main/java/com/itn/admin/cmn/config/CustomUserDetailsService.java index 8d8f938..60aabf0 100644 --- a/src/main/java/com/itn/admin/cmn/config/CustomUserDetailsService.java +++ b/src/main/java/com/itn/admin/cmn/config/CustomUserDetailsService.java @@ -31,6 +31,6 @@ public class CustomUserDetailsService implements UserDetailsService { Collection authorities = Collections.singletonList(authority); // CustomUserDetails 객체 생성 - return new CustomUserDetails(user.getUserId(), user.getPassword(), user.getUserId(), user.getId(), authorities); + return new CustomUserDetails(user.getUserId(), user.getPassword(), user.getUserId(), user.getUniqId(), authorities); } } diff --git a/src/main/java/com/itn/admin/cmn/config/UserInterceptor.java b/src/main/java/com/itn/admin/cmn/config/UserInterceptor.java index 6521615..9fc6b6d 100644 --- a/src/main/java/com/itn/admin/cmn/config/UserInterceptor.java +++ b/src/main/java/com/itn/admin/cmn/config/UserInterceptor.java @@ -1,9 +1,11 @@ package com.itn.admin.cmn.config; import com.itn.admin.itn.user.mapper.domain.UserVO; +import com.itn.admin.itn.user.service.UserService; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.userdetails.User; @@ -13,32 +15,56 @@ import org.springframework.web.servlet.ModelAndView; @Slf4j public class UserInterceptor implements HandlerInterceptor { + private final UserService userService; + + public UserInterceptor(UserService userService) { + this.userService = userService; + } + @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { + + log.info(" :: postHandle :: "); + log.info("Request URL: " + request.getRequestURL()); + log.info("Request Method: " + request.getMethod()); + log.info("Remote Address: " + request.getRemoteAddr()); + if (modelAndView != null) { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); - Object principal = authentication.getPrincipal(); + if (authentication != null && authentication.isAuthenticated()) { + Object principal = authentication.getPrincipal(); - String userId; - String userName; + String id; + String userName; - if (principal instanceof UserVO) { - UserVO loggedInUser = (UserVO) principal; - userId = loggedInUser.getUserId(); - userName = loggedInUser.getUsername(); - } else if (principal instanceof User) { - User loggedInUser = (User) principal; - userId = loggedInUser.getUsername(); - userName = loggedInUser.getUsername(); + if (principal instanceof UserVO) { // principal이 UserVO 타입인 경우 + UserVO loggedInUser = (UserVO) principal; // principal 객체를 UserVO 타입으로 변환 + id = loggedInUser.getUserId(); // UserVO 객체에서 userId 값을 가져옴 + userName = loggedInUser.getUsername(); // UserVO 객체에서 username 값을 가져옴 + } else if (principal instanceof User) { // principal이 User 타입인 경우 + User loggedInUser = (User) principal; // principal 객체를 User 타입으로 변환 + id = loggedInUser.getUsername(); // User 객체에서 username 값을 가져옴 (userId로 사용) + userName = loggedInUser.getUsername(); // User 객체에서 username 값을 가져옴 + } else if (principal instanceof CustomUserDetails) { // principal이 CustomUserDetails 타입인 경우 + CustomUserDetails loggedInUser = (CustomUserDetails) principal; // principal 객체를 CustomUserDetails 타입으로 변환 + id = loggedInUser.getId(); // CustomUserDetails 객체에서 id 값을 가져옴 + userName = loggedInUser.getUsername(); // CustomUserDetails 객체에서 username 값을 가져옴 + } else { // principal이 위의 어떤 타입도 아닌 경우 + id = principal.toString(); // principal 객체의 문자열 표현을 userId로 사용 + userName = principal.toString(); // principal 객체의 문자열 표현을 username으로 사용 + } + + log.info("userId : [{}]", id); + log.info("userName : [{}]", userName); + modelAndView.addObject("userId", id); + modelAndView.addObject("userName", userName); + + // 로그인 로그를 기록 + + userService.requestLogs(id, request.getRequestURL().toString()); } else { - userId = principal.toString(); - userName = principal.toString(); + log.info("No authenticated user found."); } - - log.info("userId : [{}]",userId.toString()); - log.info("userName : [{}]",userName.toString()); - modelAndView.addObject("userId", userId); - modelAndView.addObject("userName", userName); } } } diff --git a/src/main/java/com/itn/admin/cmn/config/WebConfig.java b/src/main/java/com/itn/admin/cmn/config/WebConfig.java index 6f2c122..06e67a8 100644 --- a/src/main/java/com/itn/admin/cmn/config/WebConfig.java +++ b/src/main/java/com/itn/admin/cmn/config/WebConfig.java @@ -1,5 +1,7 @@ package com.itn.admin.cmn.config; +import com.itn.admin.itn.user.service.UserService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @@ -7,9 +9,14 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; @Configuration public class WebConfig implements WebMvcConfigurer { + @Autowired + private UserService userService; + @Override public void addInterceptors(InterceptorRegistry registry) { - registry.addInterceptor(new UserInterceptor()) - .addPathPatterns("/**"); + registry.addInterceptor(new UserInterceptor(userService)) + .addPathPatterns("/**") + .excludePathPatterns("/**/*.css", "/**/*.js", "/**/*.png", "/**/*.jpg", "/**/*.jpeg", "/**/*.gif", "/**/*.woff", "/**/*.woff2", "/**/*.ttf", "/**/*.eot", "/**/*.map") + ; } } \ No newline at end of file diff --git a/src/main/java/com/itn/admin/itn/dictionary/mapper/DictionaryMapper.java b/src/main/java/com/itn/admin/itn/dict/mapper/DictionaryMapper.java similarity index 72% rename from src/main/java/com/itn/admin/itn/dictionary/mapper/DictionaryMapper.java rename to src/main/java/com/itn/admin/itn/dict/mapper/DictionaryMapper.java index 17fda58..cad51a8 100644 --- a/src/main/java/com/itn/admin/itn/dictionary/mapper/DictionaryMapper.java +++ b/src/main/java/com/itn/admin/itn/dict/mapper/DictionaryMapper.java @@ -1,6 +1,6 @@ -package com.itn.admin.itn.dictionary.mapper; +package com.itn.admin.itn.dict.mapper; -import com.itn.admin.itn.dictionary.mapper.domain.DictionaryVO; +import com.itn.admin.itn.dict.mapper.domain.DictionaryVO; import org.apache.ibatis.annotations.Mapper; import java.util.List; diff --git a/src/main/java/com/itn/admin/itn/dictionary/mapper/domain/DictionaryVO.java b/src/main/java/com/itn/admin/itn/dict/mapper/domain/DictionaryVO.java similarity index 93% rename from src/main/java/com/itn/admin/itn/dictionary/mapper/domain/DictionaryVO.java rename to src/main/java/com/itn/admin/itn/dict/mapper/domain/DictionaryVO.java index a412bc0..09b843e 100644 --- a/src/main/java/com/itn/admin/itn/dictionary/mapper/domain/DictionaryVO.java +++ b/src/main/java/com/itn/admin/itn/dict/mapper/domain/DictionaryVO.java @@ -1,9 +1,8 @@ -package com.itn.admin.itn.dictionary.mapper.domain; +package com.itn.admin.itn.dict.mapper.domain; import lombok.*; import java.io.Serializable; -import java.sql.Date; /** * packageName : com.itn.admin.itn.commute.mapper.domain diff --git a/src/main/java/com/itn/admin/itn/dictionary/service/DictionaryService.java b/src/main/java/com/itn/admin/itn/dict/service/DictionaryService.java similarity index 66% rename from src/main/java/com/itn/admin/itn/dictionary/service/DictionaryService.java rename to src/main/java/com/itn/admin/itn/dict/service/DictionaryService.java index bbfff55..c16b192 100644 --- a/src/main/java/com/itn/admin/itn/dictionary/service/DictionaryService.java +++ b/src/main/java/com/itn/admin/itn/dict/service/DictionaryService.java @@ -1,6 +1,6 @@ -package com.itn.admin.itn.dictionary.service; +package com.itn.admin.itn.dict.service; -import com.itn.admin.itn.dictionary.mapper.domain.DictionaryVO; +import com.itn.admin.itn.dict.mapper.domain.DictionaryVO; import java.util.List; import java.util.Map; diff --git a/src/main/java/com/itn/admin/itn/dictionary/service/impl/DictionaryServiceImpl.java b/src/main/java/com/itn/admin/itn/dict/service/impl/DictionaryServiceImpl.java similarity index 93% rename from src/main/java/com/itn/admin/itn/dictionary/service/impl/DictionaryServiceImpl.java rename to src/main/java/com/itn/admin/itn/dict/service/impl/DictionaryServiceImpl.java index 5172bbf..3fe88e3 100644 --- a/src/main/java/com/itn/admin/itn/dictionary/service/impl/DictionaryServiceImpl.java +++ b/src/main/java/com/itn/admin/itn/dict/service/impl/DictionaryServiceImpl.java @@ -1,15 +1,13 @@ -package com.itn.admin.itn.dictionary.service.impl; +package com.itn.admin.itn.dict.service.impl; import com.itn.admin.cmn.config.SecurityUtil; -import com.itn.admin.itn.dictionary.mapper.DictionaryMapper; -import com.itn.admin.itn.dictionary.mapper.domain.DictionaryVO; -import com.itn.admin.itn.dictionary.service.DictionaryService; +import com.itn.admin.itn.dict.mapper.DictionaryMapper; +import com.itn.admin.itn.dict.mapper.domain.DictionaryVO; +import com.itn.admin.itn.dict.service.DictionaryService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; diff --git a/src/main/java/com/itn/admin/itn/dictionary/web/DictionaryController.java b/src/main/java/com/itn/admin/itn/dict/web/DictionaryController.java similarity index 79% rename from src/main/java/com/itn/admin/itn/dictionary/web/DictionaryController.java rename to src/main/java/com/itn/admin/itn/dict/web/DictionaryController.java index 5651231..10d95f4 100644 --- a/src/main/java/com/itn/admin/itn/dictionary/web/DictionaryController.java +++ b/src/main/java/com/itn/admin/itn/dict/web/DictionaryController.java @@ -1,6 +1,6 @@ -package com.itn.admin.itn.dictionary.web; +package com.itn.admin.itn.dict.web; -import com.itn.admin.itn.dictionary.service.DictionaryService; +import com.itn.admin.itn.dict.service.DictionaryService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; @@ -15,7 +15,7 @@ public class DictionaryController { this.dictionaryService = dictionaryService; } - @GetMapping(value = "/dictionary/list") + @GetMapping(value = "/dict/list") public String list() { // public String list(@ModelAttribute("dictionaryVO") DictionaryVO dictionaryVO, Model model) { // @@ -24,7 +24,7 @@ public class DictionaryController { // // model.addAttribute("list", resultMap.get("resultList")); - return "dictionary/list"; + return "dict/list"; } diff --git a/src/main/java/com/itn/admin/itn/dictionary/web/DictionaryRestController.java b/src/main/java/com/itn/admin/itn/dict/web/DictionaryRestController.java similarity index 75% rename from src/main/java/com/itn/admin/itn/dictionary/web/DictionaryRestController.java rename to src/main/java/com/itn/admin/itn/dict/web/DictionaryRestController.java index c5cd089..5e59667 100644 --- a/src/main/java/com/itn/admin/itn/dictionary/web/DictionaryRestController.java +++ b/src/main/java/com/itn/admin/itn/dict/web/DictionaryRestController.java @@ -1,14 +1,11 @@ -package com.itn.admin.itn.dictionary.web; +package com.itn.admin.itn.dict.web; -import com.itn.admin.itn.dictionary.mapper.domain.DictionaryVO; -import com.itn.admin.itn.dictionary.service.DictionaryService; +import com.itn.admin.itn.dict.mapper.domain.DictionaryVO; +import com.itn.admin.itn.dict.service.DictionaryService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; -import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; -import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -24,7 +21,7 @@ public class DictionaryRestController { // 데이터 불러오기 - @GetMapping("/dictionary/list/load") + @GetMapping("/dict/list/load") public ResponseEntity> loadData() { // 데이터베이스에서 데이터를 조회하는 로직 List data = dictionaryService.getList(); @@ -33,7 +30,7 @@ public class DictionaryRestController { // 데이터 수정 - @PostMapping("/dictionary/api/update") + @PostMapping("/dict/api/update") public ResponseEntity updateData(@RequestBody Map dictionaryMap) { // 데이터 처리 로직 // 예: 데이터베이스에서 기존 데이터를 수정 diff --git a/src/main/java/com/itn/admin/itn/user/mapper/UserMapper.java b/src/main/java/com/itn/admin/itn/user/mapper/UserMapper.java index e6032b9..8e1188b 100644 --- a/src/main/java/com/itn/admin/itn/user/mapper/UserMapper.java +++ b/src/main/java/com/itn/admin/itn/user/mapper/UserMapper.java @@ -1,27 +1,23 @@ package com.itn.admin.itn.user.mapper; -import com.itn.admin.commute.mapper.domain.CommuteVO; -import com.itn.admin.itn.user.mapper.domain.Role; import com.itn.admin.itn.user.mapper.domain.UserVO; import org.apache.ibatis.annotations.Insert; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; -import org.apache.ibatis.annotations.Update; import java.util.List; -import java.util.stream.Collectors; @Mapper public interface UserMapper { // UserVO save(UserVO userVO); - @Select("SELECT id, user_id AS userId, user_pw AS password, user_name AS username, role FROM users WHERE user_id = #{userId}") + @Select("SELECT uniq_id, user_id AS userId, user_pw AS password, user_name AS username, role FROM users WHERE user_id = #{userId}") UserVO getUserById(String userId); - @Select("SELECT id, user_id AS userId, user_pw AS password, user_name AS username, role FROM users WHERE id = #{id}") - UserVO findById(String id); + @Select("SELECT uniq_id, user_id AS userId, user_pw AS password, user_name AS username, role FROM users WHERE uniq_id = #{uniqId}") + UserVO findById(String uniqId); - @Insert("INSERT INTO users (id, user_id, user_pw, user_name, role) VALUES (#{id}, #{userId}, #{password}, #{username}, #{role})") + @Insert("INSERT INTO users (uniq_id, user_id, user_pw, user_name, role) VALUES (#{uniqId}, #{userId}, #{password}, #{username}, #{role})") void save(UserVO userVO); @@ -39,6 +35,11 @@ public interface UserMapper { void updateRole(UserVO user); - @Insert("INSERT INTO login_logs (id, FRST_REGIST_PNTTM) VALUES (#{id}, now())") - void loginLog(String id); + @Insert("INSERT INTO login_logs (uniqId, FRST_REGIST_PNTTM) VALUES (#{uniqId}, now())") + void loginLog(String uniqId); + + + /// 진행중 + @Insert("INSERT INTO request_logs (uniqId, FRST_REGIST_PNTTM) VALUES (#{uniqId}, now())") + void requestLogs(String uniqId, String requestURL); } diff --git a/src/main/java/com/itn/admin/itn/user/mapper/domain/UserVO.java b/src/main/java/com/itn/admin/itn/user/mapper/domain/UserVO.java index ab6bcc6..63308a1 100644 --- a/src/main/java/com/itn/admin/itn/user/mapper/domain/UserVO.java +++ b/src/main/java/com/itn/admin/itn/user/mapper/domain/UserVO.java @@ -14,7 +14,7 @@ import java.util.Collections; @Setter @NoArgsConstructor public class UserVO implements UserDetails { - private String id; + private String uniqId; private String userId; private String password; private String username; diff --git a/src/main/java/com/itn/admin/itn/user/service/UserService.java b/src/main/java/com/itn/admin/itn/user/service/UserService.java index f333e16..a8f9e57 100644 --- a/src/main/java/com/itn/admin/itn/user/service/UserService.java +++ b/src/main/java/com/itn/admin/itn/user/service/UserService.java @@ -13,7 +13,9 @@ public interface UserService { Map getList(UserVO userVO); - RestResponse updateRole(String id, Role role); + RestResponse updateRole(String uniqId, Role role); void loginLog(String id); + + void requestLogs(String id, String requestURL); } diff --git a/src/main/java/com/itn/admin/itn/user/service/impl/UserServiceImpl.java b/src/main/java/com/itn/admin/itn/user/service/impl/UserServiceImpl.java index d20f483..3dc8ca9 100644 --- a/src/main/java/com/itn/admin/itn/user/service/impl/UserServiceImpl.java +++ b/src/main/java/com/itn/admin/itn/user/service/impl/UserServiceImpl.java @@ -55,8 +55,8 @@ public class UserServiceImpl implements UserService { } @Override - public RestResponse updateRole(String id, Role role) { - UserVO user = userMapper.findById(id); + public RestResponse updateRole(String uniqId, Role role) { + UserVO user = userMapper.findById(uniqId); if (user != null) { user.setRole(role); userMapper.updateRole(user); @@ -78,5 +78,11 @@ public class UserServiceImpl implements UserService { } + @Override + public void requestLogs(String id, String requestURL) { + +// userMapper.requestLogs(id, requestURL); + } + } diff --git a/src/main/java/com/itn/admin/itn/user/web/LoginController.java b/src/main/java/com/itn/admin/itn/user/web/LoginController.java index 426015b..8d1119c 100644 --- a/src/main/java/com/itn/admin/itn/user/web/LoginController.java +++ b/src/main/java/com/itn/admin/itn/user/web/LoginController.java @@ -15,7 +15,6 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.ui.Model; import org.springframework.web.servlet.mvc.support.RedirectAttributes; -import java.util.Collections; import java.util.UUID; @Controller @@ -55,7 +54,7 @@ public class LoginController { } UserVO user = new UserVO(); - user.setId("ITN_"+UUID.randomUUID().toString().replace("-", "").substring(0, 10)); + user.setUniqId("ITN_"+UUID.randomUUID().toString().replace("-", "").substring(0, 10)); user.setUserId(userDTO.getUserId()); user.setUsername(userDTO.getUserName()); user.setPassword(passwordEncoder.encode(userDTO.getPassword())); diff --git a/src/main/java/com/itn/admin/itn/user/web/UserRestController.java b/src/main/java/com/itn/admin/itn/user/web/UserRestController.java index 4a2ecba..ec197d7 100644 --- a/src/main/java/com/itn/admin/itn/user/web/UserRestController.java +++ b/src/main/java/com/itn/admin/itn/user/web/UserRestController.java @@ -23,7 +23,7 @@ public class UserRestController { @PostMapping("/user/updateRole") @ResponseBody - public ResponseEntity updateRole(@RequestParam("id") String id, @RequestParam("role") Role role) { - return ResponseEntity.ok(userService.updateRole(id, role)); + public ResponseEntity updateRole(@RequestParam("uniqId") String uniqId, @RequestParam("role") Role role) { + return ResponseEntity.ok(userService.updateRole(uniqId, role)); } } diff --git a/src/main/resources/mapper-config.xml b/src/main/resources/mapper-config.xml index 790c0e5..ff6292d 100644 --- a/src/main/resources/mapper-config.xml +++ b/src/main/resources/mapper-config.xml @@ -12,6 +12,6 @@ - + \ No newline at end of file diff --git a/src/main/resources/mapper/itn/dictionary/DictionaryMapper.xml b/src/main/resources/mapper/itn/dict/DictionaryMapper.xml similarity index 79% rename from src/main/resources/mapper/itn/dictionary/DictionaryMapper.xml rename to src/main/resources/mapper/itn/dict/DictionaryMapper.xml index 07f1128..362c595 100644 --- a/src/main/resources/mapper/itn/dictionary/DictionaryMapper.xml +++ b/src/main/resources/mapper/itn/dict/DictionaryMapper.xml @@ -3,10 +3,10 @@ - + @@ -64,15 +64,17 @@ , ENGLISH_WORD , ABBREVIATION , IS_CONFIRMED + , LAST_UPDUSR_ID , FRST_REGIST_PNTTM ) values ( - #{koreanWord} - , #{englishWord} - , #{abbreviation} - , #{isConfirmed} - , NOW() + #{koreanWord} + , #{englishWord} + , #{abbreviation} + , #{isConfirmed} + , #{userId} + , NOW() ); diff --git a/src/main/resources/mapper/itn/user/UserMapper.xml b/src/main/resources/mapper/itn/user/UserMapper.xml index 1d70a42..9d2175d 100644 --- a/src/main/resources/mapper/itn/user/UserMapper.xml +++ b/src/main/resources/mapper/itn/user/UserMapper.xml @@ -7,7 +7,7 @@ - UPDATE users SET role = #{role} WHERE id = #{id} + UPDATE users SET role = #{role} WHERE uniq_id = #{uniqId} \ No newline at end of file diff --git a/src/main/resources/mybatis-config.xml b/src/main/resources/mybatis-config.xml index 32c9d93..2432410 100644 --- a/src/main/resources/mybatis-config.xml +++ b/src/main/resources/mybatis-config.xml @@ -15,7 +15,7 @@ - + diff --git a/src/main/resources/templates/dictionary/list.html b/src/main/resources/templates/dict/list.html similarity index 81% rename from src/main/resources/templates/dictionary/list.html rename to src/main/resources/templates/dict/list.html index fcf8b17..177e784 100644 --- a/src/main/resources/templates/dictionary/list.html +++ b/src/main/resources/templates/dict/list.html @@ -119,6 +119,7 @@ + @@ -138,12 +139,34 @@ +