만료 API KEY 갱신처리(삭제 후 재신청)

main
유지인 2025-11-10 10:57:20 +09:00
parent 1be2f3dcfc
commit f7a23c96e3
6 changed files with 91 additions and 20 deletions

View File

@ -63,4 +63,24 @@ public class ApiController {
return resultMap; return resultMap;
} }
@RequestMapping(value = "discardApiKey.do")
@ResponseBody
public Map<String, Object> discardApiKey(HttpServletRequest request, HttpServletResponse response, @RequestParam HashMap<String, Object> params) throws Exception {
Map<String, Object> resultMap = new HashMap<>();
strUtil sUtil = new strUtil();
String apiSeq = sUtil.checkNull(parseData.parseData((String)params.get("apiSeq")));
String loginUserId = String.valueOf(request.getSession().getAttribute("USERID"));
params.put("userid", loginUserId);
params.put("apiSeq", apiSeq);
resultMap = apiService.deleteWebApiKey(params);
//
// resultMap.put("code", params.get("p_result_code"));
// resultMap.put("msg", params.get("p_err_msg"));
// resultMap.put("data",params.get("apiKey"));
return resultMap;
}
} }

View File

@ -17,4 +17,6 @@ public interface ApiMapper {
HashMap<String, Object> selectUserLatestKey(HashMap<String, Object> params) throws Exception; HashMap<String, Object> selectUserLatestKey(HashMap<String, Object> params) throws Exception;
public HashMap<String, Object> spAddWebApiKey(HashMap<String, Object> params) throws SQLException; public HashMap<String, Object> spAddWebApiKey(HashMap<String, Object> params) throws SQLException;
int deleteWebApiKey(HashMap<String, Object> params) throws Exception;
} }

View File

@ -14,4 +14,6 @@ public interface ApiService {
HashMap<String, Object> selectUserLatestKey(HashMap<String, Object> params) throws Exception; HashMap<String, Object> selectUserLatestKey(HashMap<String, Object> params) throws Exception;
HashMap<String, Object> addApiKey(HashMap<String, Object> params) throws Exception; HashMap<String, Object> addApiKey(HashMap<String, Object> params) throws Exception;
HashMap<String, Object> deleteWebApiKey(HashMap<String, Object> params) throws Exception;
} }

View File

@ -16,27 +16,26 @@ import geoinfo.util.KeyGenerator;
public class ApiServiceImpl implements ApiService{ public class ApiServiceImpl implements ApiService{
@Resource(name="ApiMapper") @Resource(name="ApiMapper")
private ApiMapper ApiMapper; private ApiMapper apiMapper;
@Override @Override
public int selectInfoListCnt(HashMap<String, Object> params) throws Exception { public int selectInfoListCnt(HashMap<String, Object> params) throws Exception {
return ApiMapper.selectInfoListCnt(params); return apiMapper.selectInfoListCnt(params);
} }
@Override @Override
public List<?> selectInfoList(HashMap<String, Object> params) throws Exception { public List<?> selectInfoList(HashMap<String, Object> params) throws Exception {
return ApiMapper.selectInfoList(params); return apiMapper.selectInfoList(params);
} }
@Override @Override
public HashMap<String, Object> selectUserLatestKey(HashMap<String, Object> params) throws Exception { public HashMap<String, Object> selectUserLatestKey(HashMap<String, Object> params) throws Exception {
return ApiMapper.selectUserLatestKey(params); return apiMapper.selectUserLatestKey(params);
} }
@Override @Override
public HashMap<String, Object> addApiKey(HashMap<String, Object> params) throws Exception { public HashMap<String, Object> addApiKey(HashMap<String, Object> params) throws Exception {
HashMap<String, Object> rtnMap = null;
String retCode = ""; String retCode = "";
String retMsg = ""; String retMsg = "";
final int MAX_RETRY = 10; final int MAX_RETRY = 10;
@ -47,7 +46,7 @@ public class ApiServiceImpl implements ApiService{
params.put("apiKey", apiKey); params.put("apiKey", apiKey);
// 2. SP 호출 // 2. SP 호출
rtnMap = ApiMapper.spAddWebApiKey(params); apiMapper.spAddWebApiKey(params);
retCode = (String) params.get("p_result_code"); retCode = (String) params.get("p_result_code");
retMsg = (String) params.get("p_err_msg"); retMsg = (String) params.get("p_err_msg");
@ -78,4 +77,22 @@ public class ApiServiceImpl implements ApiService{
return params; return params;
} }
@Override
public HashMap<String, Object> deleteWebApiKey(HashMap<String, Object> params) throws Exception {
HashMap<String, Object> result = new HashMap<String, Object>();
int resultCnt = 0;
resultCnt = apiMapper.deleteWebApiKey(params);
if (resultCnt > 0) {
result.put("code", "SUCCESS");
} else {
result.put("code", "ERROR");
}
return result;
}
} }

View File

@ -41,7 +41,7 @@
FROM (SELECT * FROM (SELECT *
FROM WEB_API_KEY FROM WEB_API_KEY
WHERE USERID = #{userid} WHERE USERID = #{userid}
AND END_DT >= SYSDATE -- AND END_DT >= SYSDATE
ORDER BY END_DT DESC) ORDER BY END_DT DESC)
WHERE ROWNUM = 1 WHERE ROWNUM = 1
</select> </select>
@ -56,4 +56,11 @@
#{p_err_msg, mode=OUT, jdbcType=VARCHAR} #{p_err_msg, mode=OUT, jdbcType=VARCHAR}
) } ) }
</select> </select>
<!-- API KEY 갱신을 위하여 기존 키정보 삭제 -->
<delete id="deleteWebApiKey" parameterType="map">
DELETE
FROM WEB_API_KEY
WHERE API_SEQ = #{apiSeq}
</delete>
</mapper> </mapper>

View File

@ -8,25 +8,14 @@
<c:choose> <c:choose>
<c:when test="${not empty userLastApiKey}"> <c:when test="${not empty userLastApiKey}">
<!-- <div> -->
<%-- <p>API_SEQ: ${userLastApiKey.API_SEQ}</p> --%>
<%-- <p>USERID: ${userLastApiKey.USERID}</p> --%>
<%-- <p>USER_TYPE: ${userLastApiKey.USER_TYPE}</p> --%>
<%-- <p>API_KEY: ${userLastApiKey.API_KEY}</p> --%>
<%-- <p>START_DT: <fmt:formatDate value="${userLastApiKey.START_DT}" pattern="yyyy-MM-dd HH:mm:ss" /></p> --%>
<%-- <p>END_DT: <fmt:formatDate value="${userLastApiKey.END_DT}" pattern="yyyy-MM-dd HH:mm:ss" /></p> --%>
<%-- <p>APPROVE_YN: ${userLastApiKey.APPROVE_YN}</p> --%>
<!-- </div> -->
<div class="table-scrollable"> <div class="table-scrollable">
<table class="table table-bordered table-data"> <table class="table table-bordered table-data">
<tbody> <tbody>
<tr> <tr>
<th>신청일</th> <th>신청일</th>
<td><fmt:formatDate value="${userLastApiKey.START_DT}" pattern="yyyy-MM-dd HH:mm:ss" /></td> <td><fmt:formatDate value="${userLastApiKey.START_DT}" pattern="yyyy-MM-dd HH:mm" /></td>
<th>만료일</th> <th>만료일</th>
<td><fmt:formatDate value="${userLastApiKey.END_DT}" pattern="yyyy-MM-dd HH:mm:ss" /></td> <td><fmt:formatDate value="${userLastApiKey.END_DT}" pattern="yyyy-MM-dd HH:mm" /></td>
<th>승인상태</th> <th>승인상태</th>
<td>${userLastApiKey.APPROVE_YN eq 'Y' ? '승인' : '미승인'}</td> <td>${userLastApiKey.APPROVE_YN eq 'Y' ? '승인' : '미승인'}</td>
</tr> </tr>
@ -38,7 +27,17 @@
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div> </div>
<!-- 현재 시간 생성 -->
<jsp:useBean id="now" class="java.util.Date" />
<!-- END_DT가 현재 시간보다 과거면 갱신 버튼 표시 -->
<c:if test="${userLastApiKey.END_DT.time lt now.time}">
<div class="row text-right">
<a href="javascript:void(0);" class="apiKeyReq btn btn-sm btn-green" onclick="javascript:discardApiKey();">갱신</a>
</div>
</c:if>
</c:when> </c:when>
<c:otherwise> <c:otherwise>
<form name="frm" method="post"> <form name="frm" method="post">
@ -83,5 +82,29 @@
} }
}); });
} }
/* [갱신] 버튼 클릭
* 만료일이 지나면 KEY를 새로 발급 받을 수 있다.
*/
function discardApiKey() {
var apiSeq = '${userLastApiKey.API_SEQ}'
$.ajax({
url : "/discardApiKey.do",
type : "post",
data : {apiSeq: apiSeq},
dataType :"json",
success : function(res){
if (res.code == "SUCCESS") {
alert("갱신을 위해 재신청하세요.")
location.reload();
} else {
alert(res.msg)
}
},
error : function(){
alert("오류입니다.");
}
});
}
</script> </script>