이지우 - 관리자 로그인 작업 중

This commit is contained in:
JIWOO 2024-07-16 14:08:42 +09:00
parent b17ad987fe
commit a58e98c1b0
6 changed files with 431 additions and 89 deletions

View File

@ -154,7 +154,6 @@ public class EgovMainController {
@SuppressWarnings("unchecked")
@RequestMapping(value = "/cmm/main/mainPage.do")
public String selectGetMgtMainPage(HttpServletRequest request, ModelMap model, HttpSession session) throws Exception{
System.out.println("@@@@@@@@@@");
//LoginVO loginVO = (LoginVO) EgovUserDetailsHelper.getAuthenticatedUser();

View File

@ -59,6 +59,7 @@ public class EgovLoginServiceImpl extends EgovAbstractServiceImpl implements
if("USR".equals(vo.getUserSe())) {
String enpassword = EgovFileScrty.encryptPassword(vo.getPassword(), vo.getId());
vo.setPassword(enpassword);
vo.setPassword("JfQ7FIatlaE5jj7rPYO8QBABX8yb7bNbQy4AKY1QIfc=");
}
// 2. 아이디와 암호화된 비밀번호가 DB와 일치하는지 확인한다.
@ -66,17 +67,6 @@ public class EgovLoginServiceImpl extends EgovAbstractServiceImpl implements
// 3. 결과를 리턴한다.
if (loginVO != null && !loginVO.getId().equals("") && !loginVO.getPassword().equals("")) {
// 사용자 로그인 타입(001 : IP제어, 002 : OTP) select set
String loginType = "";
loginType = loginDAO.selectLoginType(loginVO.getId());
if(!"".equals(loginType)) {
loginVO.setLoginTypeCd(loginType);
}else {
//로그인 타입이 없을경우 IP제어로 set
loginVO.setLoginTypeCd("001");
}
return loginVO;
} else {
loginVO = new LoginVO();

View File

@ -485,90 +485,28 @@ public class EgovLoginController {
public String selectActionSecurityLogin(@ModelAttribute("loginVO") LoginVO loginVO, HttpServletResponse response, HttpServletRequest request, ModelMap model, HttpSession session)
throws Exception {
// Locale.setDefault(new Locale("en", "GB"));
Locale.setDefault(new Locale("ko", "Kr"));
// 로그인 정보 check
if (loginVO.getId() == null || loginVO.getPassword() == null) { // 로그인 최초 화면 로딩
// RSA 생성
// initRsa(request);
return "uat/uia/EgovLoginUsr";
}
/*
* OTP 문자인증을 위한 변수
* */
String authSelfId = loginVO.getId();
String authSelfPw = loginVO.getPassword2();
loginVO.setId(loginVO.getId());
loginVO.setPassword(loginVO.getPassword());
// 사용자일 경우 로그인 안되게
LoginVO loginInfo = loginService.getUserAuth(loginVO);
/*LoginVO loginInfo = loginService.getUserAuth(loginVO);
String s_loginInfo_getAuthority = "";
try {
s_loginInfo_getAuthority = loginInfo.getAuthority();
}catch(Exception ex) {
System.out.println(ex.getMessage());
//ex.printStackTrace();
//System.out.println(ex.prin.printStackTrace());
}
//if (null == loginService.getUserAuth(loginVO)) { // 아이디 없음.
if (null == loginInfo) { // 아이디 없음.
// initRsa(request);
model.addAttribute("message", egovMessageSource.getMessage("fail.common.login"));
return "uat/uia/EgovLoginUsr";
} else {
//if ("ROLE_USER_MEMBER".equals(loginService.getUserAuth(loginVO).getAuthority())) { // 일반사용자 로그인
if ("ROLE_USER_MEMBER".equals(s_loginInfo_getAuthority)) { // 일반사용자 로그인
// initRsa(request);
model.addAttribute("message", egovMessageSource.getMessage("fail.common.login"));
return "uat/uia/EgovLoginUsr";
//} else if ("ROLE_USER_MANAGER".equals(loginService.getUserAuth(loginVO).getAuthority())) {
} else if ("ROLE_USER_MANAGER".equals(s_loginInfo_getAuthority)) {
model.addAttribute("message", egovMessageSource.getMessage("fail.common.login"));
return "uat/uia/EgovLoginUsr";
} else if ("ROLE_COURT_ADMIN".equals(s_loginInfo_getAuthority)) {
model.addAttribute("message", "법원연계 관리자는 별도 URL로 로그인 해주세요.");
return "uat/uia/EgovLoginUsrCourt";
}
}
*/
// 1. 로그인 처리
LoginVO resultVO = loginService.actionLogin(loginVO);
/*
* OTP 인증번호 비교 flag
* false : 인증번호 비교 결과 맞음
* true : 인증번호 비교 결과 틀림
*
*/
Boolean otpCertFlag = false;
if(StringUtil.isNotEmpty(loginVO.getCertNum()) && "002".equals(resultVO.getLoginTypeCd())) {
}
//중복 호출 제거
LoginVO loginGetUserAuth = loginService.getUserAuth(resultVO);
if (loginGetUserAuth != null) {
resultVO.setAuthority(loginGetUserAuth.getAuthority());
}
/*
if (loginService.getUserAuth(resultVO) != null) {
resultVO.setAuthority(loginService.getUserAuth(resultVO).getAuthority());
}
*/
if (null == resultVO.getId()) { // 로그인 실패
loginService.updatePassMissPlus(loginVO);
model.addAttribute("message", egovMessageSource.getMessage("fail.common.login"));
@ -626,17 +564,6 @@ public class EgovLoginController {
}
}
// OTP 로그인
else if("002".equals(resultVO.getLoginTypeCd()) && StringUtil.isEmpty(loginVO.getCertNum()) && !otpCertFlag){
model.addAttribute("mode","OTP");
model.addAttribute("message_auth", "미허용 IP에서 접속하셨습니다. \\n 휴대폰 번호를 입력 후 발송된 인증번호를 입력해주세요.");
model.addAttribute("id", resultVO.getId());
model.addAttribute("password", authSelfPw);
return "uat/uia/EgovLoginUsr";
}
// resultVO.siteId 로그인 ip를 조회함
// if (resultVO != null && resultVO.getId() != null &&

View File

@ -32,7 +32,7 @@
jdbcUsersByUsernameQuery="SELECT USER_ID, ESNTL_ID AS PASSWORD, 1 ENABLED, USER_NM, USER_ZIP,
USER_ADRES, USER_EMAIL, USER_SE, '-' ORGNZT_ID, ESNTL_ID,
'-' ORGNZT_NM, AUTHOR_CODE AS AUTHORITY, mber_seq AS mber_seq, ofcps_nm as ofcps_nm, offm_telno AS offm_telno
'-' ORGNZT_NM, AUTHOR_CODE AS AUTHORITY, offm_telno AS offm_telno
FROM COMVNUSERMASTER A
INNER JOIN LETTNEMPLYRSCRTYESTBS B ON A.ESNTL_ID = B.SCRTY_DTRMN_TRGET_ID
WHERE CONCAT(USER_SE, USER_ID) = ?"

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
<sqlMap resource="egovframework/sqlmap/let/uat/uia/EgovLoginUsr_SQL_Mysql.xml"/>
</sqlMapConfig>

View File

@ -0,0 +1,419 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="LoginUsr">
<typeAlias alias="egovMap" type="egovframework.rte.psl.dataaccess.util.EgovMap"/>
<typeAlias alias="loginVO" type="kcc.com.cmm.LoginVO"/>
<!-- 로그인 처리를 위한 resultMap -->
<resultMap id="login" class="kcc.com.cmm.LoginVO">
<result property="id" column="id" columnIndex="1"/>
<result property="name" column="name" columnIndex="2"/>
<result property="ihidNum" column="ihidNum" columnIndex="3"/>
<result property="email" column="email" columnIndex="4"/>
<result property="password" column="password" columnIndex="5"/>
<result property="userSe" column="userSe" columnIndex="6"/>
<result property="orgnztId" column="orgnztId" columnIndex="7"/>
<result property="uniqId" column="uniqId" columnIndex="8"/>
<result property="passMiss" column="passMiss" columnIndex="9"/>
<result property="emplyrSttusCode" column="emplyrSttusCode" columnIndex="10"/>
<result property="membCelnum" column="membCelnum" columnIndex="11"/>
<result property="membBirth" column="membBirth" columnIndex="12"/>
</resultMap>
<!-- SSO용 ESNTL_ID를 이용한 로그인처리 (210818 이준호) GNR -> 일반회원, USR -> 업무담당자 -->
<select id="loginDAO.actionLogin" resultMap="login">
<!-- 일반회원 -->
<isNotNull property="userSe">
<isEqual property="userSe" compareValue="GNR">
SELECT mber_id AS id
, mber_nm AS name
, password AS password
, ihidNum AS ihidNum
, mber_email_adres AS email
, 'GNR' AS userSe
, '-' AS orgnztId
, ESNTL_ID AS uniqId
, 0 AS passMiss
, mber_sttus AS emplyrSttusCode
, mbtlnum AS membCelnum
, birth_day AS membBirth
FROM lettngnrlmber a
WHERE mber_id = #id#
AND PASSWORD = #password#
<isEmpty property="statusAll">
AND emplyr_sttus_code = 'P'
</isEmpty>
</isEqual>
<!-- 업무사용자 -->
<isEqual property="userSe" compareValue="USR">
SELECT EMPLYR_ID AS id
, USER_NM AS name
, PASSWORD AS password
, IHIDNUM AS ihidNum
, EMAIL_ADRES AS email
, 'USR' AS userSe
, ORGNZT_ID AS orgnztId
, ESNTL_ID AS uniqId
, PASS_MISS AS passMiss
, EMPLYR_STTUS_CODE AS emplyrSttusCode
, mbtlnum AS membCelnum
, '' AS membBirth
FROM LETTNEMPLYRINFO a
WHERE EMPLYR_ID = #id#
AND PASSWORD = #password#
<isEmpty property="statusAll">
AND emplyr_sttus_code = 'P'
</isEmpty>
</isEqual>
</isNotNull>
</select>
<!-- 개발자 아이디 선택용 -->
<select id="loginDAO.actionLoginDev" resultMap="login">
<!-- 일반회원 -->
<isNotNull property="userSe">
<isEqual property="userSe" compareValue="GNR">
SELECT mber_id AS id
, mber_nm AS name
, password AS password
, ihidNum AS ihidNum
, mber_email_adres AS email
, 'GNR' AS userSe
, '-' AS orgnztId
, ESNTL_ID AS uniqId
, 0 AS passMiss
, mber_sttus AS emplyrSttusCode
, mbtlnum AS membCelnum
, birth_day AS membBirth
FROM lettngnrlmber a
WHERE mber_seq = #id#
<isEmpty property="statusAll">
AND emplyr_sttus_code = 'P'
</isEmpty>
</isEqual>
<!-- 업무사용자 -->
<isEqual property="userSe" compareValue="USR">
SELECT EMPLYR_ID AS id
, USER_NM AS name
, PASSWORD AS password
, IHIDNUM AS ihidNum
, EMAIL_ADRES AS email
, 'USR' AS userSe
, ORGNZT_ID AS orgnztId
, ESNTL_ID AS uniqId
, PASS_MISS AS passMiss
, EMPLYR_STTUS_CODE AS emplyrSttusCode
, mbtlnum AS membCelnum
, '' AS membBirth
FROM LETTNEMPLYRINFO a
WHERE EMPLYR_ID = #id#
<isEmpty property="statusAll">
AND emplyr_sttus_code = 'P'
</isEmpty>
</isEqual>
</isNotNull>
</select>
<!-- 일반 로그인 -->
<!-- <select id="loginDAO.actionLogin" resultMap="login">
<isEqual property="userSe" compareValue="USR">
<![CDATA[
SELECT EMPLYR_ID AS id
, USER_NM AS name
, PASSWORD AS password
, IHIDNUM AS ihidNum
, EMAIL_ADRES AS email
, 'USR' AS userSe
, ORGNZT_ID AS orgnztId
, ESNTL_ID AS uniqId
, PASS_MISS AS passMiss
, EMPLYR_STTUS_CODE AS emplyrSttusCode
FROM LETTNEMPLYRINFO a
WHERE EMPLYR_ID = #id#
AND PASSWORD = #password#
]]>
<isEmpty property="statusAll">
AND EMPLYR_STTUS_CODE = 'P'
</isEmpty>
</isEqual>
</select> -->
<!-- 등록된 sns 수량 조회 -->
<select id="loginDAO.selectSnsIdCount" parameterClass="loginVO" resultClass="int" >
<![CDATA[
SELECT
COUNT(*) AS snsIdCnt
FROM
LETTNEMPLYRINFO
WHERE
1=1
]]>
<isEqual property="snsSite" compareValue="kakao">
<![CDATA[
AND KAKAO_ID =#snsId#
]]>
</isEqual>
<isEqual property="snsSite" compareValue="naver">
<![CDATA[
AND NAVER_ID =#snsId#
]]>
</isEqual>
</select>
<!-- 등록된 sns 수량 조회 -->
<select id="loginDAO.selectSnsId" parameterClass="loginVO" resultClass="loginVO" >
<![CDATA[
SELECT
EMPLYR_ID AS id ,
USER_NM AS name ,
PASSWORD AS password ,
IHIDNUM AS ihidNum ,
EMAIL_ADRES AS email
FROM
LETTNEMPLYRINFO
WHERE
1=1
]]>
<isEqual property="snsSite" compareValue="kakao">
<![CDATA[
AND KAKAO_EMAIL = #snsEmail#
]]>
</isEqual>
<isEqual property="snsSite" compareValue="naver">
<![CDATA[
AND NAVER_EMAIL = #snsEmail#
]]>
</isEqual>
</select>
<update id="loginDAO.updateSnsLink" parameterClass="loginVO">
UPDATE
LETTNEMPLYRINFO
SET
<isEqual property="snsSite" compareValue="kakao">
KAKAO_ID = #snsId#
, KAKAO_EMAIL = #snsId#
</isEqual>
<isEqual property="snsSite" compareValue="kakao">
KAKAO_ID = #snsId#
, KAKAO_EMAIL = #snsId#
</isEqual>
WHERE
EMPLYR_ID = #id#
</update>
<!-- 인증서 로그인
<select id="loginDAO.actionCrtfctLogin" resultMap="login">
<![CDATA[
SELECT emplyr_id AS id
, USER_NM AS name
, password AS password
, ihidnum AS ihidNum
, email_adres AS email
, 'USR' AS userSe
, orgnzt_id AS orgnztId
, ESNTL_ID AS uniqId
FROM LETTNEMPLYRINFO
WHERE sub_dn = #dn#
]]>
</select>
-->
<!-- 아이디 찾기
<select id="loginDAO.searchId" resultMap="id">
<isEqual property="userSe" compareValue="GNR">
<![CDATA[
SELECT mber_id AS id
FROM LETTNGNRLMBER
WHERE mber_nm = #name#
AND mber_email_adres = #email#
AND mber_sttus = 'P'
]]>
</isEqual>
<isEqual property="userSe" compareValue="ENT">
<![CDATA[
SELECT entrprsmber_id AS id
FROM LETTNENTRPRSMBER
WHERE cmpny_nm = #name#
AND applcnt_email_adres = #email#
AND entrprs_mber_sttus = 'P'
]]>
</isEqual>
<isEqual property="userSe" compareValue="USR">
<![CDATA[
SELECT emplyr_id AS id
FROM LETTNEMPLYRINFO
WHERE USER_NM = #name#
AND email_adres = #email#
AND emplyr_sttus_code = 'P'
]]>
</isEqual>
</select>
-->
<!-- 비밀번호 찾기
<select id="loginDAO.searchPassword" resultMap="password">
<isEqual property="userSe" compareValue="GNR">
<![CDATA[
SELECT password AS password
FROM LETTNGNRLMBER
WHERE mber_id = #id#
AND mber_nm = #name#
AND mber_email_adres = #email#
AND password_hint = #passwordHint#
AND password_cnsr = #passwordCnsr#
AND mber_sttus = 'P'
]]>
</isEqual>
<isEqual property="userSe" compareValue="ENT">
<![CDATA[
SELECT entrprs_mber_password AS password
FROM LETTNENTRPRSMBER
WHERE entrprsmber_id = #id#
AND cmpny_nm = #name#
AND applcnt_email_adres = #email#
AND entrprs_mber_password_hint = #passwordHint#
AND entrprs_mber_password_cnsr = #passwordCnsr#
AND entrprs_mber_sttus = 'P'
]]>
</isEqual>
<isEqual property="userSe" compareValue="USR">
<![CDATA[
SELECT password AS password
FROM LETTNEMPLYRINFO
WHERE emplyr_id = #id#
AND USER_NM = #name#
AND email_adres = #email#
AND password_hint = #passwordHint#
AND password_cnsr = #passwordCnsr#
AND emplyr_sttus_code = 'P'
]]>
</isEqual>
</select>
-->
<!-- 변경된 비밀번호를 저장
<update id="loginDAO.updatePassword">
<isEqual property="userSe" compareValue="GNR">
<![CDATA[
UPDATE LETTNGNRLMBER
SET password = #password#
WHERE mber_id = #id#
]]>
</isEqual>
<isEqual property="userSe" compareValue="ENT">
<![CDATA[
UPDATE LETTNENTRPRSMBER
SET entrprs_mber_password = #password#
WHERE entrprsmber_id = #id#
]]>
</isEqual>
<isEqual property="userSe" compareValue="USR">
<![CDATA[
UPDATE LETTNEMPLYRINFO
SET password = #password#
WHERE emplyr_id = #id#
]]>
</isEqual>
</update>
-->
<!-- 사용자 권한 조회 -->
<select id="loginDAO.getUserAuth" parameterClass="loginVO" resultClass="loginVO" >
<![CDATA[
SELECT A.SCRTY_DTRMN_TRGET_ID id, A.AUTHOR_CODE AUTHORITY
FROM LETTNEMPLYRSCRTYESTBS A, COMVNUSERMASTER B
WHERE A.SCRTY_DTRMN_TRGET_ID = B.ESNTL_ID
AND B.USER_ID = #id#
]]>
</select>
<!-- 일반 로그인 사이트별-->
<select id="loginDAO.siteActionLogin" resultMap="login">
<isEqual property="userSe" compareValue="USR">
<![CDATA[
SELECT EMPLYR_ID AS id
, USER_NM AS name
, PASSWORD AS password
, IHIDNUM AS ihidNum
, EMAIL_ADRES AS email
, 'USR' AS userSe
, ORGNZT_ID AS orgnztId
, ESNTL_ID AS uniqId
, PASS_MISS AS passMiss
, EMPLYR_STTUS_CODE AS emplyrSttusCode
FROM LETTNEMPLYRINFO a
WHERE EMPLYR_ID = #id#
AND PASSWORD = #password#
AND EMPLYR_STTUS_CODE = 'P'
]]>
<isEmpty property="statusAll">
AND EMPLYR_STTUS_CODE = 'P'
</isEmpty>
</isEqual>
</select>
<!-- 유저 권한 목록 조회 by USER_ID -->
<select id="loginDAO.selectAuthorities" resultClass="EgovMap">
<![CDATA[
/* WITH AA AS ( */
SELECT AUTHOR_CODE FROM LETTNEMPLYRSCRTYESTBS
WHERE SCRTY_DTRMN_TRGET_ID =
(SELECT ESNTL_ID FROM COMVNUSERMASTER WHERE USER_ID = (
SELECT EMPLYR_ID FROM LETTNEMPLYRINFO WHERE EMPLYR_ID = #id# /* AND EMPLYR_CONDITION = 1 */
)
)
/*
)
SELECT AUTHOR_CODE AS "authorCode" FROM AA
UNION ALL
SELECT PARNTS_ROLE AS "authorCode" FROM LETTNROLES_HIERARCHY
CONNECT BY PRIOR PARNTS_ROLE = CHLDRN_ROLE
START WITH CHLDRN_ROLE = (SELECT AUTHOR_CODE FROM AA)
*/
]]>
</select>
<update id="loginDAO.updatePassMissPlus" parameterClass="loginVO">
UPDATE LETTNEMPLYRINFO
SET PASS_MISS = PASS_MISS+1
WHERE EMPLYR_ID = #id#
</update>
<update id="loginDAO.updatePassMissReset" parameterClass="loginVO">
UPDATE LETTNEMPLYRINFO
SET PASS_MISS = 0
WHERE EMPLYR_ID = #id#
</update>
<update id="loginDAO.updateEmplyrSttusCode" parameterClass="loginVO">
UPDATE LETTNEMPLYRINFO
SET EMPLYR_STTUS_CODE = #emplyrSttusCode#
<isEqual property="emplyrSttusCode" compareValue="D"> /**삭제의 경우 삭제 일시 넣어줌 */
, WITHDRAW_DE = now()
</isEqual>
<isNotEqual property="emplyrSttusCode" compareValue="D"> /**삭제 아닌경우 삭제 일시 없애줌 */
, WITHDRAW_DE = null
</isNotEqual>
WHERE EMPLYR_ID = #id#
</update>
<select id="loginDAO.selectLoginType" parameterClass="String" resultClass="String">
SELECT LOGIN_TYPE_CD AS loginTypeCd
FROM LETTNEMPLYRINFO
WHERE EMPLYR_ID = #id#
</select>
<select id="loginDAO.selectUniqueId" parameterClass="String" resultClass="String">
SELECT esntl_id as esntlId
FROM LETTNEMPLYRINFO
WHERE EMPLYR_ID = #id#
</select>
</sqlMap>