이호영 이호영 2025-06-30
api 발송 수정
@f7e96648a8956ba6f2cb33b5f780f70aeb108df6
src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java
--- src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java
+++ src/main/java/itn/let/kakao/user/kakaoAt/web/KakaoAlimTalkSendController.java
@@ -828,13 +828,13 @@
 		modelAndView.setViewName("jsonView");
 		
 		try {
-			LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
-			String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
+//			LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null;
+//			String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId());
 			
-			if(userId == "") {
-				modelAndView.addObject("result", "notLogin");
-				return modelAndView;
-			}else {
+//			if(userId == "") {
+//				modelAndView.addObject("result", "notLogin");
+//				return modelAndView;
+//			}else {
 				
 				KakaoReturnVO kakaoTemplateTempList = kakaoApiTemplate.selectKakaoApiTemplate(kakaoVO);
 				
@@ -850,7 +850,7 @@
 				
 				modelAndView.addObject("kakaoTemplateList", kakaoTemplateTempList);
 				modelAndView.addObject("result", "success");
-			}
+//			}
 		}catch(Exception ex){
 			ex.printStackTrace();
 			modelAndView.addObject("message", egovMessageSource.getMessage("fail.common.select"));
src/main/resources/egovframework/spring/com/context-security.xml
--- src/main/resources/egovframework/spring/com/context-security.xml
+++ src/main/resources/egovframework/spring/com/context-security.xml
@@ -1,94 +1,94 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-	xmlns:egov-security="http://www.egovframe.go.kr/schema/egov-security"
-	xmlns:security="http://www.springframework.org/schema/security"
-	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
-        http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-4.2.xsd
-		http://www.egovframe.go.kr/schema/egov-security http://www.egovframe.go.kr/schema/egov-security/egov-security-3.7.xsd">
-
-    <security:http pattern="/css/**" security="none"/>
-	<security:http pattern="/html/**" security="none"/>
-    <security:http pattern="/images/**" security="none"/>
- 	<security:http pattern="/js/**" security="none"/>
- 	<security:http pattern="/resource/**" security="none"/>
- 	<security:http pattern="\A/WEB-INF/jsp/.*\Z" request-matcher="regex" security="none"/>
- 	
-    <egov-security:config id="securityConfig"
-        loginUrl="/uat/uia/actionMain.do"
-        logoutSuccessUrl="/uat/uia/actionMain.do"
-        loginFailureUrl="/uat/uia/actionSecurityLogin.do?login_error=1"
-        accessDeniedUrl="/sec/ram/accessDenied.do"		
-		
-        dataSource="egov.dataSource"
-        			
-        jdbcUsersByUsernameQuery="SELECT USER_ID, ESNTL_ID AS PASSWORD, 1 ENABLED, USER_NM, USER_ZIP, 
-        							USER_ADRES, USER_EMAIL, USER_SE,  '-' ORGNZT_ID, ESNTL_ID, MBTLNUM AS MOBLPHONNO,
-        							'-' ORGNZT_NM, AUTHOR_CODE AS AUTHORITY, DEPT
-        							FROM COMVNUSERMASTER A 
-        							INNER JOIN LETTNEMPLYRSCRTYESTBS B ON A.ESNTL_ID = B.SCRTY_DTRMN_TRGET_ID 
-        							WHERE CONCAT(USER_SE, USER_ID) = ?"
-        
-        jdbcAuthoritiesByUsernameQuery="SELECT A.SCRTY_DTRMN_TRGET_ID USER_ID, A.AUTHOR_CODE AUTHORITY 
-        							FROM LETTNEMPLYRSCRTYESTBS A, COMVNUSERMASTER B 
-        							WHERE A.SCRTY_DTRMN_TRGET_ID = B.ESNTL_ID AND B.USER_ID = ?"
-        							
-        jdbcMapClass="itn.let.uat.uia.service.impl.EgovSessionMapping"
-
-        requestMatcherType="regex"
-        hash="plaintext"
-        hashBase64="false"
-		
-		concurrentMaxSessons="999"
-		concurrentExpiredUrl="/"
-
-		defaultTargetUrl="/uat/uia/actionMain.do"
-		
-    />
-
-<!--원 소스 -->
-<!-- defaultTargetUrl="/uat/uia/actionMain.do" -->
-
- 	<!--  sqlHierarchicalRoles="
-       		SELECT a.CHLDRN_ROLE child, a.PARNTS_ROLE parent 
-       		FROM LETTNROLES_HIERARCHY a LEFT JOIN LETTNROLES_HIERARCHY b on (a.CHLDRN_ROLE = b.PARNTS_ROLE)" -->
-       		
-    <egov-security:secured-object-config id="securedObjectConfig"
-    	roleHierarchyString="
-			ROLE_ADMIN > ROLE_USER_MEMBER
-			ROLE_USER_MEMBER > ROLE_ANONYMOUS"
-			
-       sqlRolesAndUrl="
-       		SELECT a.ROLE_PTTRN url, b.AUTHOR_CODE authority 
-       		FROM LETTNROLEINFO a, LETTNAUTHORROLERELATE b 
-       		WHERE a.ROLE_CODE = b.ROLE_CODE AND a.ROLE_TY = 'url'  
-       		ORDER BY a.ROLE_SORT"
-       		
-       sqlRolesAndMethod="
-       		SELECT a.ROLE_PTTRN method, b.AUTHOR_CODE authority 
-       		FROM LETTNROLEINFO a, LETTNAUTHORROLERELATE b 
-       		WHERE a.ROLE_CODE = b.ROLE_CODE AND a.ROLE_TY = 'method'
-       		ORDER BY a.ROLE_SORT"
-       
-       sqlRolesAndPointcut="
-       		SELECT a.ROLE_PTTRN pointcut, b.AUTHOR_CODE authority 
-       		FROM LETTNROLEINFO a, LETTNAUTHORROLERELATE b 
-       		WHERE a.ROLE_CODE = b.ROLE_CODE AND a.ROLE_TY = 'pointcut'
-       		ORDER BY a.ROLE_SORT"
-
-       sqlRegexMatchedRequestMapping="
-       		SELECT a.resource_pattern uri, b.authority authority 
-       		FROM LETTNROLEINFO a, LETTNAUTHORROLERELATE b 
-       		WHERE a.ROLE_CODE = b.ROLE_CODE AND a.ROLE_TY = 'regex'
-       		ORDER BY a.ROLE_SORT"
-       
-    />
-
-	<egov-security:initializer id="initializer" supportMethod="true" supportPointcut="false" />
-
-    <!-- URL에 세미콜론(semicolon)허용 여부(기본값/false) -->
-	<bean id="egovStrictHttpFirewall" class="org.springframework.security.web.firewall.StrictHttpFirewall">
-		<property name="allowSemicolon" value="true"/>
-	</bean>
-	<security:http-firewall ref="egovStrictHttpFirewall"/>
-		
-</beans>
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+	xmlns:egov-security="http://www.egovframe.go.kr/schema/egov-security"
+	xmlns:security="http://www.springframework.org/schema/security"
+	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
+        http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-4.2.xsd
+		http://www.egovframe.go.kr/schema/egov-security http://www.egovframe.go.kr/schema/egov-security/egov-security-3.7.xsd">
+
+    <security:http pattern="/css/**" security="none"/>
+	<security:http pattern="/html/**" security="none"/>
+    <security:http pattern="/images/**" security="none"/>
+ 	<security:http pattern="/js/**" security="none"/>
+ 	<security:http pattern="/resource/**" security="none"/>
+ 	<security:http pattern="\A/WEB-INF/jsp/.*\Z" request-matcher="regex" security="none"/>
+ 	
+    <egov-security:config id="securityConfig"
+        loginUrl="/uat/uia/actionMain.do"
+        logoutSuccessUrl="/uat/uia/actionMain.do"
+        loginFailureUrl="/uat/uia/actionSecurityLogin.do?login_error=1"
+        accessDeniedUrl="/sec/ram/accessDenied.do"		
+		
+        dataSource="egov.dataSource"
+        			
+        jdbcUsersByUsernameQuery="SELECT USER_ID, ESNTL_ID AS PASSWORD, 1 ENABLED, USER_NM, USER_ZIP, 
+        							USER_ADRES, USER_EMAIL, USER_SE,  '-' ORGNZT_ID, ESNTL_ID, MBTLNUM AS MOBLPHONNO,
+        							'-' ORGNZT_NM, AUTHOR_CODE AS AUTHORITY, DEPT
+        							FROM COMVNUSERMASTER A 
+        							INNER JOIN LETTNEMPLYRSCRTYESTBS B ON A.ESNTL_ID = B.SCRTY_DTRMN_TRGET_ID 
+        							WHERE CONCAT(USER_SE, USER_ID) = ?"
+        
+        jdbcAuthoritiesByUsernameQuery="SELECT A.SCRTY_DTRMN_TRGET_ID USER_ID, A.AUTHOR_CODE AUTHORITY 
+        							FROM LETTNEMPLYRSCRTYESTBS A, COMVNUSERMASTER B 
+        							WHERE A.SCRTY_DTRMN_TRGET_ID = B.ESNTL_ID AND B.USER_ID = ?"
+        							
+        jdbcMapClass="itn.let.uat.uia.service.impl.EgovSessionMapping"
+
+        requestMatcherType="regex"
+        hash="plaintext"
+        hashBase64="false"
+		
+		concurrentMaxSessons="999"
+		concurrentExpiredUrl="/"
+
+		defaultTargetUrl="/uat/uia/actionMain.do"
+		
+    />
+
+<!--원 소스 -->
+<!-- defaultTargetUrl="/uat/uia/actionMain.do" -->
+
+ 	<!--  sqlHierarchicalRoles="
+       		SELECT a.CHLDRN_ROLE child, a.PARNTS_ROLE parent 
+       		FROM LETTNROLES_HIERARCHY a LEFT JOIN LETTNROLES_HIERARCHY b on (a.CHLDRN_ROLE = b.PARNTS_ROLE)" -->
+       		
+    <egov-security:secured-object-config id="securedObjectConfig"
+    	roleHierarchyString="
+			ROLE_ADMIN > ROLE_USER_MEMBER
+			ROLE_USER_MEMBER > ROLE_ANONYMOUS"
+			
+       sqlRolesAndUrl="
+       		SELECT a.ROLE_PTTRN url, b.AUTHOR_CODE authority 
+       		FROM LETTNROLEINFO a, LETTNAUTHORROLERELATE b 
+       		WHERE a.ROLE_CODE = b.ROLE_CODE AND a.ROLE_TY = 'url'  
+       		ORDER BY a.ROLE_SORT"
+       		
+       sqlRolesAndMethod="
+       		SELECT a.ROLE_PTTRN method, b.AUTHOR_CODE authority 
+       		FROM LETTNROLEINFO a, LETTNAUTHORROLERELATE b 
+       		WHERE a.ROLE_CODE = b.ROLE_CODE AND a.ROLE_TY = 'method'
+       		ORDER BY a.ROLE_SORT"
+       
+       sqlRolesAndPointcut="
+       		SELECT a.ROLE_PTTRN pointcut, b.AUTHOR_CODE authority 
+       		FROM LETTNROLEINFO a, LETTNAUTHORROLERELATE b 
+       		WHERE a.ROLE_CODE = b.ROLE_CODE AND a.ROLE_TY = 'pointcut'
+       		ORDER BY a.ROLE_SORT"
+
+       sqlRegexMatchedRequestMapping="
+       		SELECT a.resource_pattern uri, b.authority authority 
+       		FROM LETTNROLEINFO a, LETTNAUTHORROLERELATE b 
+       		WHERE a.ROLE_CODE = b.ROLE_CODE AND a.ROLE_TY = 'regex'
+       		ORDER BY a.ROLE_SORT"
+       
+    />
+
+	<egov-security:initializer id="initializer" supportMethod="true" supportPointcut="false" />
+
+    <!-- URL에 세미콜론(semicolon)허용 여부(기본값/false) -->
+	<bean id="egovStrictHttpFirewall" class="org.springframework.security.web.firewall.StrictHttpFirewall">
+		<property name="allowSemicolon" value="true"/>
+	</bean>
+	<security:http-firewall ref="egovStrictHttpFirewall"/>
+		
+</beans>
src/main/webapp/WEB-INF/jsp/web/api/at/apiSpec_tab1.jsp
--- src/main/webapp/WEB-INF/jsp/web/api/at/apiSpec_tab1.jsp
+++ src/main/webapp/WEB-INF/jsp/web/api/at/apiSpec_tab1.jsp
@@ -113,46 +113,47 @@
 			<tbody>
 				<tr>
 					<td><span class="font_b">resultCode</span></td>
-					<td>성공 여부("0" 아니면 실패)</td>
+					<td>성공 여부 ("0" 이면 성공, 그 외는 실패)</td>
 					<td>String</td>
 				</tr>
 				<tr>
 					<td><span class="font_b">data</span></td>
-					<td>결과값 객체(성공 : 데이터, 실패 : 메시지)</td>
-					<td>Object</td>
+					<td>응답 결과 객체 (성공 시 배열, 실패 시 메시지)</td>
+					<td>Array&lt;Object&gt;</td>
 				</tr>
 				<tr>
-					<td><span class="font_b">[data].msgGroupId</span></td>
-					<td>메시지 그룹 ID</td>
+					<td><span class="font_b">data[].userId</span></td>
+					<td>사용자 ID</td>
 					<td>String</td>
 				</tr>
 				<tr>
-					<td><span class="font_b">[data].msgType</span></td>
-					<td>메시지 타입(4 : 단문, 6 : 장문)</td>
+					<td><span class="font_b">data[].senderKey</span></td>
+					<td>발신자 키</td>
 					<td>String</td>
 				</tr>
 				<tr>
-					<td><span class="font_b">[data].blockCnt</span></td>
-					<td>수신거부 건수</td>
+					<td><span class="font_b">data[].phoneNumber</span></td>
+					<td>수신자 전화번호</td>
 					<td>String</td>
 				</tr>
 				<tr>
-					<td><span class="font_b">[data].failCnt</span></td>
-					<td>전송 실패 건수</td>
+					<td><span class="font_b">data[].yellowId</span></td>
+					<td>카카오톡 채널 ID</td>
 					<td>String</td>
 				</tr>
 				<tr>
-					<td><span class="font_b">[data].successCnt</span></td>
-					<td>성공 건수</td>
+					<td><span class="font_b">data[].firstRegistPnttm</span></td>
+					<td>최초 등록 시각 (yyyy‑MM‑dd HH:mm:ss)</td>
 					<td>String</td>
 				</tr>
 				<tr>
-					<td><span class="font_b">[data].test_yn</span></td>
-					<td>테스트 데이터 여부</td>
+					<td><span class="font_b">data[].firstRegisterId</span></td>
+					<td>최초 등록자 ID</td>
 					<td>String</td>
 				</tr>
 			</tbody>
 		</table>
+
 		<div class="table_info">
 			<p>※ JSON 객체로 응답합니다.</p>
 		</div>
@@ -173,25 +174,19 @@
 				</p>
 				<div class="indent_t1">
 					<p>
-						<span>"msgGroupId"</span>:"MSGGID_0000000000000"
+						,<span>"senderKey"</span>:"6691434xxxxxxxxxxxxxxxxxxxxxxxxx"
 					</p>
 					<p>
-						,<span>"msgType"</span>:"SMS"
+						,<span>""phoneNumber"</span>:"010xxxxxxxx"
 					</p>
 					<p>
-						,<span>"resultCode"</span>:"0"
+						,<span>"yellowId"</span>:"@ID"
 					</p>
 					<p>
-						,<span>"blockCnt"</span>:"0"
+						,<span>"firstRegistPnttm"</span>:"2025-10-05 18:08:58"
 					</p>
 					<p>
-						,<span>"failCnt"</span>:"0"
-					</p>
-					<p>
-						,<span>"successCnt"</span>:"3"
-					</p>
-					<p>
-						,<span>"test_yn"</span>:null
+						,<span>"firstRegisterId"</span>:"userId"
 					</p>
 				</div>
 				<p>&#65373;</p>
@@ -207,10 +202,10 @@
 			<p>&#65371;</p>
 			<div class="indent">
 				<p>
-					<span>"resultCode"</span>:"1040"
+					<span>"resultCode"</span>:"401"
 				</p>
 				<p>
-					,<span>"data"</span>:"치환 데이터 오류"
+					,<span>"message"</span>:"Unauthorized"
 				</p>
 			</div>
 			<p class="l_code">&#65373;</p>
Add a comment
List