From 82bda62e3fb6cf9a26b6e9a63a9cca6e4e3cad32 Mon Sep 17 00:00:00 2001 From: "hehihoho3@gmail.com" Date: Wed, 7 May 2025 11:50:28 +0900 Subject: [PATCH] =?UTF-8?q?admin=20=EC=82=AC=EC=9A=A9=EC=9E=90=20=EB=93=B1?= =?UTF-8?q?=EB=A1=9D=20=EA=B8=B0=EB=8A=A5=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cmn/config/PasswordEncoderConfig.java | 17 +++ .../itn/admin/cmn/config/SecurityConfig.java | 13 +- .../service/impl/CommuteServiceImpl.java | 3 - .../itn/admin/itn/user/mapper/UserMapper.java | 1 + .../admin/itn/user/service/UserService.java | 2 + .../user/service/impl/UserServiceImpl.java | 23 +++- .../admin/itn/user/web/LoginController.java | 6 +- .../itn/user/web/UserRestController.java | 9 ++ .../resources/mapper/itn/user/UserMapper.xml | 42 ++++++ .../resources/templates/itn/bizTrip/list.html | 6 +- .../resources/templates/itn/user/list.html | 126 +++++++++++++++++- 11 files changed, 232 insertions(+), 16 deletions(-) create mode 100644 src/main/java/com/itn/admin/cmn/config/PasswordEncoderConfig.java diff --git a/src/main/java/com/itn/admin/cmn/config/PasswordEncoderConfig.java b/src/main/java/com/itn/admin/cmn/config/PasswordEncoderConfig.java new file mode 100644 index 0000000..5bbdf64 --- /dev/null +++ b/src/main/java/com/itn/admin/cmn/config/PasswordEncoderConfig.java @@ -0,0 +1,17 @@ +package com.itn.admin.cmn.config; + +import lombok.extern.slf4j.Slf4j; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; + +@Slf4j +@Configuration +public class PasswordEncoderConfig { + + @Bean + public PasswordEncoder passwordEncoder() { + return new BCryptPasswordEncoder(); + } +} diff --git a/src/main/java/com/itn/admin/cmn/config/SecurityConfig.java b/src/main/java/com/itn/admin/cmn/config/SecurityConfig.java index c0285b4..51e0cd7 100644 --- a/src/main/java/com/itn/admin/cmn/config/SecurityConfig.java +++ b/src/main/java/com/itn/admin/cmn/config/SecurityConfig.java @@ -37,14 +37,19 @@ public class SecurityConfig { private final UserMapper userMapper; + private final PasswordEncoder passwordEncoder; // 생성자를 통해 의존성 주입 - public SecurityConfig(CustomUserDetailsService customUserDetailsService, UserService userService, UserMapper userMapper) { + public SecurityConfig(CustomUserDetailsService customUserDetailsService + , UserService userService + , UserMapper userMapper + , PasswordEncoder passwordEncoder) { this.customUserDetailsService = customUserDetailsService; this.userService = userService; this.userMapper = userMapper; + this.passwordEncoder = passwordEncoder; } - +/* // 비밀번호 암호화를 위한 BCryptPasswordEncoder 빈 생성 @Bean public PasswordEncoder passwordEncoder() { @@ -52,7 +57,7 @@ public class SecurityConfig { log.info(" + UserRestController 등록된 PasswordEncoder instance: {}", encoder); return encoder; - } + }*/ // Spring Security의 보안 필터 체인을 설정하는 핵심 메서드 @Bean @@ -170,7 +175,7 @@ public class SecurityConfig { log.info("로그인 실패 - DB 비번(encoded): [{}]", user.getPassword()); // 비번 매칭 테스트 - boolean match = passwordEncoder().matches(rawPassword, user.getPassword()); + boolean match = passwordEncoder.matches(rawPassword, user.getPassword()); log.info("비밀번호 일치 여부: [{}]", match); } else { log.warn("로그인 실패 - 아이디에 해당하는 사용자 없음"); diff --git a/src/main/java/com/itn/admin/commute/service/impl/CommuteServiceImpl.java b/src/main/java/com/itn/admin/commute/service/impl/CommuteServiceImpl.java index 6544443..66822dc 100644 --- a/src/main/java/com/itn/admin/commute/service/impl/CommuteServiceImpl.java +++ b/src/main/java/com/itn/admin/commute/service/impl/CommuteServiceImpl.java @@ -96,9 +96,6 @@ public class CommuteServiceImpl implements CommuteService { userAllVO.forEach(userVO -> log.info("userVO : [{}][{}]", userVO.getBiostarId(), userVO) ); commuteList.stream().forEach(t->{ - - - // 지각 체크 t.setFirstActivityTimeMemo(this.getLateChk(t.getFirstActivityTime())); // 조기퇴근 체크 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 b7619df..1c8742b 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 @@ -47,4 +47,5 @@ public interface UserMapper { @Select("SELECT * FROM users WHERE user_name LIKE CONCAT('%', #{userName}, '%')") List findByUniqUserName(String userName); + void insertUser(UserVO userVO); } 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 f2b0148..861f4b2 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 @@ -27,4 +27,6 @@ public interface UserService { RestResponse findByUniqUserName(String userName); RestResponse findByUniqApprovalUser(String userName); + + RestResponse insertUser(UserVO userVO); } 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 8019aab..6bc921c 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 @@ -14,6 +14,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; +import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.stereotype.Service; import java.time.DayOfWeek; @@ -21,10 +22,7 @@ import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; @Slf4j @@ -38,6 +36,8 @@ public class UserServiceImpl implements UserService { @Autowired TCodeUtils tCodeUtils; + @Autowired + private PasswordEncoder passwordEncoder; public Map getList(UserVO userVO) { @@ -160,4 +160,19 @@ public class UserServiceImpl implements UserService { } + @Override + public RestResponse insertUser(UserVO userVO) { + + userVO.setUniqId("ITN_"+ UUID.randomUUID().toString().replace("-", "").substring(0, 10)); + userVO.setPassword(passwordEncoder.encode("itn123")); // 초기 비밀번호 + userVO.setRole(Role.ROLE_GUEST); + log.info("userVO : [{}]", userVO); + userMapper.insertUser(userVO); + return RestResponse.builder() + .status(HttpStatus.OK) // 200 성공 + .data(userVO.getUserName()) + .msg("등록되었습니다.") + .build(); + } + } 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 e443e89..0bac190 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 @@ -43,7 +43,11 @@ public class LoginController { } @PostMapping("/user/register") - public String register(@Valid @ModelAttribute("user") UserDTO userDTO, BindingResult result, Model model, RedirectAttributes redirectAttributes) { + public String register(@Valid @ModelAttribute("user") UserDTO userDTO + , BindingResult result + , Model model + , RedirectAttributes redirectAttributes) + { if (result.hasErrors()) { return "register"; } 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 587f63b..7b3eef3 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 @@ -80,4 +80,13 @@ public class UserRestController { return ResponseEntity.ok().body(userService.changepassword(setUserVO)); } + + + @PostMapping("/api/admin/user") + public ResponseEntity createUser(@RequestBody UserVO userVO, @AuthenticationPrincipal CustomUserDetails loginUser) { + userVO.setFrstRegisterId(loginUser.getUser().getUserId()); + userVO.setLastUpdusrId(loginUser.getUser().getUserId()); + return ResponseEntity.ok().body(userService.insertUser(userVO)); + } + } diff --git a/src/main/resources/mapper/itn/user/UserMapper.xml b/src/main/resources/mapper/itn/user/UserMapper.xml index c36e798..24e7568 100644 --- a/src/main/resources/mapper/itn/user/UserMapper.xml +++ b/src/main/resources/mapper/itn/user/UserMapper.xml @@ -102,4 +102,46 @@ AND u.active_yn = 'Y' + + + INSERT INTO users ( + uniq_id, + user_id, + user_pw, + user_name, + mobile_phone, + rank_cd, + dept_cd, + role, + gw_id, + biostar_id, + active_yn, + hire_date, + resign_date, + FRST_REGISTER_ID, + FRST_REGIST_PNTTM, + LAST_UPDUSR_ID, + LAST_UPDT_PNTTM + ) + VALUES ( + #{uniqId}, + #{userId}, + #{password}, + #{userName}, + #{mobilePhone}, + #{rankCd}, + #{deptCd}, + #{role}, + #{gwId}, + #{biostarId}, + #{activeYn}, + #{hireDate}, + #{resignDate}, + #{frstRegisterId}, + NOW(), + #{lastUpdusrId}, + NOW() + ) + + \ No newline at end of file diff --git a/src/main/resources/templates/itn/bizTrip/list.html b/src/main/resources/templates/itn/bizTrip/list.html index 47fdfda..55d7529 100644 --- a/src/main/resources/templates/itn/bizTrip/list.html +++ b/src/main/resources/templates/itn/bizTrip/list.html @@ -169,13 +169,14 @@