diff --git a/src/main/java/com/dbnt/faisp/config/SecurityConfig.java b/src/main/java/com/dbnt/faisp/config/SecurityConfig.java index 19df475b..7742d097 100644 --- a/src/main/java/com/dbnt/faisp/config/SecurityConfig.java +++ b/src/main/java/com/dbnt/faisp/config/SecurityConfig.java @@ -118,7 +118,8 @@ public class SecurityConfig{ "/js/**", "/vendor/**", "/login", - "/Crosseditor/uploadImg" + "/Crosseditor/uploadImg", + "/user/findUser" ).permitAll() // 권한 없이 접근 허용 .antMatchers( "/dashboard", @@ -172,6 +173,8 @@ public class SecurityConfig{ http.headers().frameOptions().sameOrigin(); // 나모에디터 이미지 업로드시 csrf 토큰을 추가할 수 없어서 예외처리. http.csrf().ignoringAntMatchers("/Crosseditor/uploadImg"); + // 비밀번호찾기 토큰없이 사용 + http.csrf().ignoringAntMatchers("/user/findUser"); return http.build(); } diff --git a/src/main/java/com/dbnt/faisp/main/userInfo/UserInfoController.java b/src/main/java/com/dbnt/faisp/main/userInfo/UserInfoController.java index 6cf63368..abf62773 100644 --- a/src/main/java/com/dbnt/faisp/main/userInfo/UserInfoController.java +++ b/src/main/java/com/dbnt/faisp/main/userInfo/UserInfoController.java @@ -3,7 +3,10 @@ package com.dbnt.faisp.main.userInfo; import com.dbnt.faisp.main.userInfo.model.UserInfo; import com.dbnt.faisp.main.userInfo.service.UserInfoService; import lombok.RequiredArgsConstructor; + +import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -18,5 +21,15 @@ public class UserInfoController { public String insertUserInfo(UserInfo insertReqInfo) { return userInfoService.insertUserInfo(insertReqInfo); } + + @PostMapping("/findUser") + public Integer findUser(@RequestBody UserInfo ui) { + return userInfoService.findUser(ui); + } + + @PostMapping("/updateUserPw") + public Integer updateUserPw(UserInfo ui) { + return userInfoService.updateUserPw(ui); + } } diff --git a/src/main/java/com/dbnt/faisp/main/userInfo/mapper/UserInfoMapper.java b/src/main/java/com/dbnt/faisp/main/userInfo/mapper/UserInfoMapper.java index e24294f6..e998c730 100644 --- a/src/main/java/com/dbnt/faisp/main/userInfo/mapper/UserInfoMapper.java +++ b/src/main/java/com/dbnt/faisp/main/userInfo/mapper/UserInfoMapper.java @@ -1,10 +1,6 @@ package com.dbnt.faisp.main.userInfo.mapper; import com.dbnt.faisp.main.userInfo.model.*; -import com.dbnt.faisp.main.userInfo.model.UserInoutLog; -import com.dbnt.faisp.main.userInfo.model.UserRequestLog; -import com.dbnt.faisp.main.userInfo.model.PersonnelStatus; -import com.dbnt.faisp.main.userInfo.model.UserEdu; import com.dbnt.faisp.util.ParamMap; import org.apache.ibatis.annotations.Mapper; @@ -47,4 +43,6 @@ public interface UserInfoMapper { List selectAlarmList(UserAlarm userAlarm); Integer selectAlarmListCnt(UserAlarm userAlarm); + + Integer selectUserInfo(UserInfo ui); } diff --git a/src/main/java/com/dbnt/faisp/main/userInfo/service/UserInfoService.java b/src/main/java/com/dbnt/faisp/main/userInfo/service/UserInfoService.java index 28fd572c..826bf192 100644 --- a/src/main/java/com/dbnt/faisp/main/userInfo/service/UserInfoService.java +++ b/src/main/java/com/dbnt/faisp/main/userInfo/service/UserInfoService.java @@ -235,5 +235,16 @@ public class UserInfoService implements UserDetailsService { public String selectUserStatus(UserInfoHistory userInfoHistory) { return userInfoRepository.getUserStatus(userInfoHistory.getUserSeq()); } + + public Integer findUser(UserInfo ui) { + return userInfoMapper.selectUserInfo(ui); + } + + @Transactional + public Integer updateUserPw(UserInfo ui) { + UserInfo dbUser = userInfoRepository.findByUserSeq(ui.getUserSeq()).orElse(null); + dbUser.setPassword(convertPassword(ui.getPassword())); + return userInfoRepository.save(dbUser).getUserSeq(); + } } diff --git a/src/main/resources/mybatisMapper/UserInfoMapper.xml b/src/main/resources/mybatisMapper/UserInfoMapper.xml index e9879587..e7a0c9f2 100644 --- a/src/main/resources/mybatisMapper/UserInfoMapper.xml +++ b/src/main/resources/mybatisMapper/UserInfoMapper.xml @@ -451,4 +451,14 @@ inner join menu_mgt b on a.menu_key = b.menu_key + + + \ No newline at end of file diff --git a/src/main/resources/static/js/login/login.js b/src/main/resources/static/js/login/login.js index 9b8446ff..fa6083f8 100644 --- a/src/main/resources/static/js/login/login.js +++ b/src/main/resources/static/js/login/login.js @@ -128,4 +128,93 @@ function valueCheck(){ return true; -} \ No newline at end of file +} + +$(document).on('click', '#findPwBtn', function (){ + if(!$("#fDicCode").val()){ + alert("공무원식별번호를 입력해주세요."); + $('#fDicCode').focus(); + return false; + } + if(!$("#fUserId").val()){ + alert("아이디를 입력해주세요."); + $('#fUserId').focus(); + return false; + } + if(!$("#fUserNm").val()){ + alert("이름을 입력해주세요."); + $('#fUserNm').focus(); + return false; + } + if(!$("#fPhoneNo").val()){ + alert("휴대폰번호를 입력해주세요."); + $('#fPhoneNo').focus(); + return false; + } + const dicCode = $("#fDicCode").val(); + const userId = $("#fUserId").val(); + const userNm = $("#fUserNm").val(); + const phoneNo = $("#fPhoneNo").val(); + $.ajax({ + type : 'POST', + data : JSON.stringify({dicCode:dicCode,userId:userId,userNm:userNm,phoneNo:phoneNo}), + contentType: "application/json; charset=utf-8", + url : "/user/findUser", + success : function(data) { + if(data != ""){ + $("#findPasswordModal").modal('hide'); + $("#changeUserSeq").val(data); + $("#changePasswordModal").modal('show'); + }else{ + alert("일치하는 정보가 없습니다.") + }; + contentFade("out"); + }, + error : function(e) { + alert("ajax 통신실패.") + contentFade("out"); + } + }) +}) + +$(document).on('click', '#changePwBtn', function (){ + const p1 = document.getElementById('cPw').value; + const p2 = document.getElementById('chkPw').value; + if(!p1){ + alert("비밀번호를 입력해주세요."); + $('#cPw').focus(); + return false; + } + if(!p2){ + alert("비밀번호확인을 입력해주세요."); + $('#chkPw').focus(); + return false; + } + if(p1!=p2) { + alert("비밀번호가 일치하지 않습니다. 비밀번호를 재확인해주세요.") + return false; + } + if(confirm("비밀번호를 변경하시겠습니까?")){ + contentFade("in"); + const formData = new FormData($("#changePasswordFm")[0]); + $.ajax({ + type : 'POST', + data : formData, + url : "/user/updateUserPw", + processData: false, + contentType: false, + beforeSend: function (xhr){ + xhr.setRequestHeader($("[name='_csrf_header']").val(), $("[name='_csrf']").val()); + }, + success : function(result) { + alert("비밀번호가 변경되었습니다."); + contentFade("out"); + location.reload(); + }, + error : function(xhr, status) { + alert("비밀번호변경이 실패하였습니다."); + contentFade("out"); + } + }) + } +}) \ No newline at end of file diff --git a/src/main/resources/templates/login/login.html b/src/main/resources/templates/login/login.html index 8c890f0c..bd63030e 100644 --- a/src/main/resources/templates/login/login.html +++ b/src/main/resources/templates/login/login.html @@ -46,10 +46,8 @@ 회원가입 - - -
아이디/패스워드찾기
-
+
비밀번호 재설정
+ @@ -63,6 +61,81 @@ + + + +