Q.CAST 자동로그인 복호화 추가 및 유저 정보 조회 api 수정

This commit is contained in:
LEEYONGJAE 2024-10-17 13:18:22 +09:00
parent 5ed22e1bc1
commit bd922d9788
2 changed files with 55 additions and 3 deletions

View File

@ -116,4 +116,42 @@ public class LoginController {
return loginEncryptId;
}
@Operation(description = "자동 로그인에 사용하는 아이디를 복호화한다.")
@PostMapping("/v1.0/user/login/autoLoginDecryptData")
public String getAutoLoginDecryptData(@RequestBody LoginUser loginUser) throws Exception {
String loginDecryptId = "";
if ("".equals(loginUser.getLoginId()) || loginUser.getLoginId() == null) {
throw new QcastException(ErrorCode.INVALID_INPUT_VALUE,
message.getMessage("common.message.required.data", "User Id"));
}
try {
// [0]. AES 암호화 : 날짜(YYYYMMDD) + autoLoginAesKey
LocalDate today = LocalDate.now();
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMdd");
String formattedDate = today.format(formatter);
String decryptKey = formattedDate + autoLoginAesKey;
// [1]. 복호화 진행
byte[] keyData = loginPasswordAesKey.getBytes();
SecretKey secureKey = new SecretKeySpec(keyData, "AES");
Cipher c = Cipher.getInstance("AES/CBC/PKCS5Padding");
c.init(Cipher.DECRYPT_MODE, secureKey,
new IvParameterSpec(decryptKey.substring(0, 16).getBytes("UTF-8")));
byte[] byteStr = Base64.getDecoder().decode(loginUser.getLoginId().getBytes());
// [2]. 복호화 셋팅
loginDecryptId = new String(c.doFinal(byteStr), "UTF-8");
} catch (Exception e) {
throw new QcastException(ErrorCode.INTERNAL_SERVER_ERROR,
message.getMessage("common.message.error"));
}
return loginDecryptId;
}
}

View File

@ -14,9 +14,23 @@
<select id="getUser" parameterType="com.interplug.qcast.biz.login.dto.LoginUser"
resultType="com.interplug.qcast.biz.login.dto.UserResponse">
/* sqlid : com.interplug.qcast.login.findByLoginId */
select USER_ID, SALE_STORE_ID, NAME, MAIL, TEL
select USER_ID
, SALE_STORE_ID AS STORE_ID
, CATEGORY
, NAME AS USER_NM
, NAME_KANA AS USER_NM_KANA
, TEL AS TEL_NO
, FAX
, MAIL AS EMAIL
, GROUP_ID
, MODULE_SELECT_GROUP_ID
, VERSION_MANAGEMENT_ID
, DISP_COST_PRICE
, DISP_SELLING_PRICE
, REGIST_DATETIME
, LAST_EDIT_DATETIME
, LAST_EDIT_USER
from M_USER
where USER_ID = #{username}
and PASSWORD = #{password}
where USER_ID = #{loginId}
</select>
</mapper>