feat: 아이디 찾기 시 이메일 주소 생략

main
thkim 2025-01-03 17:59:37 +09:00
parent 8b730a30b1
commit 9e773f16ac
8 changed files with 105 additions and 27 deletions

View File

@ -1,3 +1,8 @@
#src\main\resources\egovframework\egovProps\globals.properties
# 시추공 정보 입력 시 표고 값에 하이픈 넣을 때 0으로 변환되도록 수정
src\main\webapp\WEB-INF\views\web\input\header.jsp
# 아이디 찾기 시 이메일 주소 생략
src\main\webapp\WEB-INF\views\body\account\main.jsp
src\main\webapp\WEB-INF\views\body\account\idNotFind.jsp
src\main\resources\egovframework\sqlmap\mapper\main\Login_SQL.xml
src\main\java\geoinfo\main\login\service\LoginMapper.java
src\main\java\geoinfo\main\login\service\impl\LoginServiceImpl.java
src\main\java\geoinfo\main\login\LoginController.java

View File

@ -62,6 +62,7 @@ import geoinfo.main.login.service.LoginService;
import geoinfo.main.main.MainController;
import geoinfo.map.mapControl.service.MapControlService;
import geoinfo.util.MobileCertificationUtil;
import geoinfo.util.MyUtil;
import geoinfo.util.ScriptUtil;
import ictway.comm.web.WebUtil;
import io.jsonwebtoken.JwtBuilder;
@ -129,28 +130,30 @@ public class LoginController {
String hdnCertification = request.getParameter("hdnCertification");
String name = "";
String DI = "";
String phoneNo = "";
try {
Map<String, String> certResult = MobileCertificationUtil.decryptCertData(hdnCertification, hdnCertNum);
name = certResult.get("name");
DI = certResult.get("DI");
phoneNo = certResult.get("phoneNo");
}
catch(IndexOutOfBoundsException ex){
log.info("LoginController 아이디 찾기 잘못된 접근");
rda.addFlashAttribute("msg", "잘못된 접근입니다.");
rda.addFlashAttribute("msg", "잘못된 접근입니다. code: 1");
mv.setViewName("redirect:topMenuSelect.do?url=joinsearch");
return mv;
}
catch(NumberFormatException ex){
log.info("LoginController 아이디 찾기 잘못된 접근");
rda.addFlashAttribute("msg", "잘못된 접근입니다.");
rda.addFlashAttribute("msg", "잘못된 접근입니다. code: 2");
mv.setViewName("redirect:topMenuSelect.do?url=joinsearch");
return mv;
}
catch(Exception ex){
log.info("LoginController 아이디 찾기 잘못된 접근");
rda.addFlashAttribute("msg", "잘못된 접근입니다.");
rda.addFlashAttribute("msg", "잘못된 접근입니다. code: 3");
mv.setViewName("redirect:topMenuSelect.do?url=joinsearch");
return mv;
}
@ -158,6 +161,8 @@ public class LoginController {
map.put("cls", cls);
map.put("name", name);
map.put("email", email);
map.put("dupinfo", DI);
map.put("phone", phoneNo);
log.info(
@ -167,33 +172,80 @@ public class LoginController {
"hdnCertNum:[" + hdnCertNum + "]\n" +
"hdnCertification:[" + hdnCertification + "]\n" +
"cls:[" + cls + "]\n" +
"email:[" + email + "]\n" +
"name:[" + name + "]\n" +
"DI:[" + DI + "]\n" +
"\n--------------------------------------------------------------\n"
);
Map<String, Object> result = loginService.selectSearchId(map);
map.clear();
if (result != null) {
if(result.get("certification_yn").toString().equals("0")) {
log.info("아이디 찾기 // 휴대폰 미인증 사용자");
map.put("DI", DI);
map.put("userid", result.get("userid"));
loginService.updateCertWebMemberIn(map);
}
updateUserDi(DI, result);
mv.addObject("username", result.get("user_name"));
mv.addObject("userid", result.get("userid"));
mv.addObject("datetime", result.get("datetime"));
log.info("LoginController 아이디 찾기 // 사용자 조회 후 // name : " + result.get("user_name") + " id : " + result.get("userid"));
} else {
mv.setViewName("body/account/idNotFind");
mv.addObject("msg", name + "님의 아이디는 등록되어있지 않습니다.");
return mv;
}
result = null;
result = loginService.selectSearchIdByNameAndPhoneAndDupinfoIsNullAndCertificationYnFalse(map);
map.clear();
if (result != null) {
updateUserDi(DI, result);
if( cls == null ) {
cls = "0";
}
int paramCls = MyUtil.getIntegerFromObject(cls);
int resultCls = MyUtil.getIntegerFromObject(result.get("cls"));
String paramAccountType = "개인";
if( paramCls == 0 ) {
paramAccountType = "개인";
} else if( paramCls == 1 ) {
paramAccountType = "기업";
}
String resultAccountType = "개인";
if( resultCls == 0 ) {
resultAccountType = "개인";
} else if( resultCls == 1 ) {
resultAccountType = "기업";
}
mv.addObject("username", result.get("user_name"));
mv.addObject("userid", result.get("userid"));
mv.addObject("datetime", result.get("datetime"));
mv.addObject("accountType", resultAccountType);
log.info("LoginController 아이디 찾기 // 사용자 조회 후 // name : " + result.get("user_name") + " id : " + result.get("userid"));
return mv;
}
mv.setViewName("body/account/idNotFind");
mv.addObject("msg", "인증하신 휴대폰 인증정보와 일치하는 아이디가 없습니다.");
return mv;
}
private void updateUserDi(String DI, Map<String, Object> result ) throws Exception {
Map<String, Object> map = new HashMap<String, Object>();
if(result.get("certification_yn").toString().equals("0")) {
log.info("아이디 찾기 // 휴대폰 미인증 사용자");
map.put("DI", DI);
map.put("userid", result.get("userid"));
loginService.updateCertWebMemberIn(map);
}
}
@RequestMapping(value = "/searchPassLog.do")
public String searchPassLog(ModelMap model, HttpServletRequest request, HttpServletResponse response, @RequestParam Map<String, Object> params) throws Exception {

View File

@ -26,6 +26,9 @@ public interface LoginMapper {
Map<String, Object> selectSearchId(Map<String, Object> map);
Map<String, Object> selectSearchIdByNameAndPhoneAndDupinfoIsNullAndCertificationYnFalse(Map<String, Object> map);
Map<String, Object> selectSearchPass(Map<String, Object> map);
void updateSearchPassch(Map<String, Object> map);

View File

@ -20,6 +20,7 @@ public interface LoginService {
int insertSearchPassLog(Map<String, Object> map)throws Exception;
void pswdResetWebMemberIn(Map<String,Object> map) throws Exception;
Map<String, Object> selectSearchId(Map<String, Object> map) throws Exception;
Map<String, Object> selectSearchIdByNameAndPhoneAndDupinfoIsNullAndCertificationYnFalse(Map<String, Object> map) throws Exception;
Map<String, Object> selectSearchPass(Map<String, Object> map) throws Exception;
void updateSearchPassch(Map<String, Object> map) throws Exception;
int selectWebDownLoadLog(Map<String, Object> map);

View File

@ -4,6 +4,7 @@ import egovframework.com.cmm.service.EgovProperties;
import egovframework.rte.psl.dataaccess.util.EgovMap;
import geoinfo.main.login.service.LoginMapper;
import geoinfo.main.login.service.LoginService;
import geoinfo.main.login.service.selectSearchIdByNameAndPhoneAndDupinfoIsNullAndCertificationYnFalse;
import geoinfo.util.FileUtil;
import java.io.FileNotFoundException;
@ -75,6 +76,11 @@ public class LoginServiceImpl implements LoginService{
return loginMapper.selectSearchId(map);
}
@Override
public Map<String, Object> selectSearchIdByNameAndPhoneAndDupinfoIsNullAndCertificationYnFalse(Map<String, Object> map) throws Exception {
return loginMapper.selectSearchIdByNameAndPhoneAndDupinfoIsNullAndCertificationYnFalse(map);
}
@Override
public Map<String, Object> selectSearchPass(Map<String, Object> map) throws Exception {
return loginMapper.selectSearchPass(map);

View File

@ -133,10 +133,25 @@
WHERE
TRIM(USER_NAME) = TRIM(#{name}) AND
TRIM(CLS) = TRIM(#{cls}) AND
TRIM(EMAIL) = TRIM(#{email})
TRIM(DUPINFO) = TRIM(#{dupinfo})
]]>
</select>
<select id="selectSearchIdByNameAndPhoneAndDupinfoIsNullAndCertificationYnFalse" resultType="org.apache.commons.collections.map.CaseInsensitiveMap">
<![CDATA[
SELECT USER_NAME, USERID, TO_CHAR(DATETIME,'YYYY-MM-DD') DATETIME, CERTIFICATION_YN, CLS, DUPINFO
FROM WEB_MEMBER_IN
WHERE
TRIM(USER_NAME) = TRIM(#{name}) AND
TRIM(REGEXP_REPLACE(PHONE, '-', '') ) = TRIM(#{phone}) AND
(
TRIM(DUPINFO) IS NULL OR
TRIM(CERTIFICATION_YN) = 0
)
]]>
</select>
<select id="selectSearchPass" resultType="org.apache.commons.collections.map.CaseInsensitiveMap">
<![CDATA[
SELECT CLS, USER_NAME, USERID, PASSWD, TO_CHAR(DATETIME,'YYYY-MM-DD') DATETIME, CERTIFICATION_YN

View File

@ -2,8 +2,7 @@
<script src="./js/jquery/jquery-1.10.2.min.js"></script>
<script>
$(window).load(function(){
/* alert("${msg}"); */
alert("인증하신 휴대폰 및 이메일주소와 일치하는 아이디가 없습니다.");
alert("${msg}");
parent.document.location.href="topMenuSelect.do?url=joinsearch"
});
</script>

View File

@ -39,12 +39,7 @@
if(document.getElementById("hdnCertNum").value == "" || document.getElementById("hdnCertification").value == ""){
alert("아이디 찾기를 하시려면 휴대폰 인증을 하셔야 합니다.");
return;
}
else if(document.getElementById("email").value == ""){
alert("이메일을 입력하세요");
return;
}
else{
} else {
var url = "<c:url value='/searchId.do' />";
document.regClauseFrom.action = url;
document.regClauseFrom.method = "POST";
@ -59,7 +54,7 @@
<div class="page-explanation">
<div class="page-explanation-inner">
<p class="page-explanation-text">
아이디를 잊으셨나요? 신상조회를 통해 찾으실 수 있습니다.
아이디를 잊으셨나요? 휴대폰 인증을 통해 찾으실 수 있습니다.
</p>
</div>
</div>
@ -73,12 +68,14 @@
<h3 class="page-title-3depth title-line marT0"><span>아이디</span></h3>
<ul class="content-ul-list" style="height: 100px;">
<!--
<li>
휴대폰 인증과 회원 가입시 입력하신 이메일 주소로만 확인 가능합니다.
</li>
<li>
이메일 주소를 모르시는 경우, 관리자에게 문의바랍니다.
</li>
-->
<li>
기업사용자 중 퇴사자 발생으로 인해 아이디 찾기가 어려운 회원은 ryujisong@kict.re.kr로 회원정보를 보내주신 뒤 문의바랍니다.
</li>
@ -101,7 +98,7 @@
</div>
</div>
<div class="contents-row padT20">
<div class="contents-row padT20" style="display: none;">
<label for="email" class="control-label marR5">이메일주소</label>
<input name="email" id="email" type="text" class="gg-input" placeholder="이메일주소">
</div>