--- 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 @@ |
| 828 | 828 |
modelAndView.setViewName("jsonView");
|
| 829 | 829 |
|
| 830 | 830 |
try {
|
| 831 |
- LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 832 |
- String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 831 |
+// LoginVO loginVO = EgovUserDetailsHelper.isAuthenticated()? (LoginVO)EgovUserDetailsHelper.getAuthenticatedUser():null; |
|
| 832 |
+// String userId = loginVO == null ? "" : EgovStringUtil.isNullToString(loginVO.getId()); |
|
| 833 | 833 |
|
| 834 |
- if(userId == "") {
|
|
| 835 |
- modelAndView.addObject("result", "notLogin");
|
|
| 836 |
- return modelAndView; |
|
| 837 |
- }else {
|
|
| 834 |
+// if(userId == "") {
|
|
| 835 |
+// modelAndView.addObject("result", "notLogin");
|
|
| 836 |
+// return modelAndView; |
|
| 837 |
+// }else {
|
|
| 838 | 838 |
|
| 839 | 839 |
KakaoReturnVO kakaoTemplateTempList = kakaoApiTemplate.selectKakaoApiTemplate(kakaoVO); |
| 840 | 840 |
|
... | ... | @@ -850,7 +850,7 @@ |
| 850 | 850 |
|
| 851 | 851 |
modelAndView.addObject("kakaoTemplateList", kakaoTemplateTempList);
|
| 852 | 852 |
modelAndView.addObject("result", "success");
|
| 853 |
- } |
|
| 853 |
+// } |
|
| 854 | 854 |
}catch(Exception ex){
|
| 855 | 855 |
ex.printStackTrace(); |
| 856 | 856 |
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
... | ... | @@ -1,94 +1,94 @@ |
| 1 |
-<?xml version="1.0" encoding="UTF-8"?> |
|
| 2 |
-<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
|
| 3 |
- xmlns:egov-security="http://www.egovframe.go.kr/schema/egov-security" |
|
| 4 |
- xmlns:security="http://www.springframework.org/schema/security" |
|
| 5 |
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd |
|
| 6 |
- http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-4.2.xsd |
|
| 7 |
- http://www.egovframe.go.kr/schema/egov-security http://www.egovframe.go.kr/schema/egov-security/egov-security-3.7.xsd"> |
|
| 8 |
- |
|
| 9 |
- <security:http pattern="/css/**" security="none"/> |
|
| 10 |
- <security:http pattern="/html/**" security="none"/> |
|
| 11 |
- <security:http pattern="/images/**" security="none"/> |
|
| 12 |
- <security:http pattern="/js/**" security="none"/> |
|
| 13 |
- <security:http pattern="/resource/**" security="none"/> |
|
| 14 |
- <security:http pattern="\A/WEB-INF/jsp/.*\Z" request-matcher="regex" security="none"/> |
|
| 15 |
- |
|
| 16 |
- <egov-security:config id="securityConfig" |
|
| 17 |
- loginUrl="/uat/uia/actionMain.do" |
|
| 18 |
- logoutSuccessUrl="/uat/uia/actionMain.do" |
|
| 19 |
- loginFailureUrl="/uat/uia/actionSecurityLogin.do?login_error=1" |
|
| 20 |
- accessDeniedUrl="/sec/ram/accessDenied.do" |
|
| 21 |
- |
|
| 22 |
- dataSource="egov.dataSource" |
|
| 23 |
- |
|
| 24 |
- jdbcUsersByUsernameQuery="SELECT USER_ID, ESNTL_ID AS PASSWORD, 1 ENABLED, USER_NM, USER_ZIP, |
|
| 25 |
- USER_ADRES, USER_EMAIL, USER_SE, '-' ORGNZT_ID, ESNTL_ID, MBTLNUM AS MOBLPHONNO, |
|
| 26 |
- '-' ORGNZT_NM, AUTHOR_CODE AS AUTHORITY, DEPT |
|
| 27 |
- FROM COMVNUSERMASTER A |
|
| 28 |
- INNER JOIN LETTNEMPLYRSCRTYESTBS B ON A.ESNTL_ID = B.SCRTY_DTRMN_TRGET_ID |
|
| 29 |
- WHERE CONCAT(USER_SE, USER_ID) = ?" |
|
| 30 |
- |
|
| 31 |
- jdbcAuthoritiesByUsernameQuery="SELECT A.SCRTY_DTRMN_TRGET_ID USER_ID, A.AUTHOR_CODE AUTHORITY |
|
| 32 |
- FROM LETTNEMPLYRSCRTYESTBS A, COMVNUSERMASTER B |
|
| 33 |
- WHERE A.SCRTY_DTRMN_TRGET_ID = B.ESNTL_ID AND B.USER_ID = ?" |
|
| 34 |
- |
|
| 35 |
- jdbcMapClass="itn.let.uat.uia.service.impl.EgovSessionMapping" |
|
| 36 |
- |
|
| 37 |
- requestMatcherType="regex" |
|
| 38 |
- hash="plaintext" |
|
| 39 |
- hashBase64="false" |
|
| 40 |
- |
|
| 41 |
- concurrentMaxSessons="999" |
|
| 42 |
- concurrentExpiredUrl="/" |
|
| 43 |
- |
|
| 44 |
- defaultTargetUrl="/uat/uia/actionMain.do" |
|
| 45 |
- |
|
| 46 |
- /> |
|
| 47 |
- |
|
| 48 |
-<!--원 소스 --> |
|
| 49 |
-<!-- defaultTargetUrl="/uat/uia/actionMain.do" --> |
|
| 50 |
- |
|
| 51 |
- <!-- sqlHierarchicalRoles=" |
|
| 52 |
- SELECT a.CHLDRN_ROLE child, a.PARNTS_ROLE parent |
|
| 53 |
- FROM LETTNROLES_HIERARCHY a LEFT JOIN LETTNROLES_HIERARCHY b on (a.CHLDRN_ROLE = b.PARNTS_ROLE)" --> |
|
| 54 |
- |
|
| 55 |
- <egov-security:secured-object-config id="securedObjectConfig" |
|
| 56 |
- roleHierarchyString=" |
|
| 57 |
- ROLE_ADMIN > ROLE_USER_MEMBER |
|
| 58 |
- ROLE_USER_MEMBER > ROLE_ANONYMOUS" |
|
| 59 |
- |
|
| 60 |
- sqlRolesAndUrl=" |
|
| 61 |
- SELECT a.ROLE_PTTRN url, b.AUTHOR_CODE authority |
|
| 62 |
- FROM LETTNROLEINFO a, LETTNAUTHORROLERELATE b |
|
| 63 |
- WHERE a.ROLE_CODE = b.ROLE_CODE AND a.ROLE_TY = 'url' |
|
| 64 |
- ORDER BY a.ROLE_SORT" |
|
| 65 |
- |
|
| 66 |
- sqlRolesAndMethod=" |
|
| 67 |
- SELECT a.ROLE_PTTRN method, b.AUTHOR_CODE authority |
|
| 68 |
- FROM LETTNROLEINFO a, LETTNAUTHORROLERELATE b |
|
| 69 |
- WHERE a.ROLE_CODE = b.ROLE_CODE AND a.ROLE_TY = 'method' |
|
| 70 |
- ORDER BY a.ROLE_SORT" |
|
| 71 |
- |
|
| 72 |
- sqlRolesAndPointcut=" |
|
| 73 |
- SELECT a.ROLE_PTTRN pointcut, b.AUTHOR_CODE authority |
|
| 74 |
- FROM LETTNROLEINFO a, LETTNAUTHORROLERELATE b |
|
| 75 |
- WHERE a.ROLE_CODE = b.ROLE_CODE AND a.ROLE_TY = 'pointcut' |
|
| 76 |
- ORDER BY a.ROLE_SORT" |
|
| 77 |
- |
|
| 78 |
- sqlRegexMatchedRequestMapping=" |
|
| 79 |
- SELECT a.resource_pattern uri, b.authority authority |
|
| 80 |
- FROM LETTNROLEINFO a, LETTNAUTHORROLERELATE b |
|
| 81 |
- WHERE a.ROLE_CODE = b.ROLE_CODE AND a.ROLE_TY = 'regex' |
|
| 82 |
- ORDER BY a.ROLE_SORT" |
|
| 83 |
- |
|
| 84 |
- /> |
|
| 85 |
- |
|
| 86 |
- <egov-security:initializer id="initializer" supportMethod="true" supportPointcut="false" /> |
|
| 87 |
- |
|
| 88 |
- <!-- URL에 세미콜론(semicolon)허용 여부(기본값/false) --> |
|
| 89 |
- <bean id="egovStrictHttpFirewall" class="org.springframework.security.web.firewall.StrictHttpFirewall"> |
|
| 90 |
- <property name="allowSemicolon" value="true"/> |
|
| 91 |
- </bean> |
|
| 92 |
- <security:http-firewall ref="egovStrictHttpFirewall"/> |
|
| 93 |
- |
|
| 94 |
-</beans> |
|
| 1 |
+<?xml version="1.0" encoding="UTF-8"?> |
|
| 2 |
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
|
| 3 |
+ xmlns:egov-security="http://www.egovframe.go.kr/schema/egov-security" |
|
| 4 |
+ xmlns:security="http://www.springframework.org/schema/security" |
|
| 5 |
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd |
|
| 6 |
+ http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-4.2.xsd |
|
| 7 |
+ http://www.egovframe.go.kr/schema/egov-security http://www.egovframe.go.kr/schema/egov-security/egov-security-3.7.xsd"> |
|
| 8 |
+ |
|
| 9 |
+ <security:http pattern="/css/**" security="none"/> |
|
| 10 |
+ <security:http pattern="/html/**" security="none"/> |
|
| 11 |
+ <security:http pattern="/images/**" security="none"/> |
|
| 12 |
+ <security:http pattern="/js/**" security="none"/> |
|
| 13 |
+ <security:http pattern="/resource/**" security="none"/> |
|
| 14 |
+ <security:http pattern="\A/WEB-INF/jsp/.*\Z" request-matcher="regex" security="none"/> |
|
| 15 |
+ |
|
| 16 |
+ <egov-security:config id="securityConfig" |
|
| 17 |
+ loginUrl="/uat/uia/actionMain.do" |
|
| 18 |
+ logoutSuccessUrl="/uat/uia/actionMain.do" |
|
| 19 |
+ loginFailureUrl="/uat/uia/actionSecurityLogin.do?login_error=1" |
|
| 20 |
+ accessDeniedUrl="/sec/ram/accessDenied.do" |
|
| 21 |
+ |
|
| 22 |
+ dataSource="egov.dataSource" |
|
| 23 |
+ |
|
| 24 |
+ jdbcUsersByUsernameQuery="SELECT USER_ID, ESNTL_ID AS PASSWORD, 1 ENABLED, USER_NM, USER_ZIP, |
|
| 25 |
+ USER_ADRES, USER_EMAIL, USER_SE, '-' ORGNZT_ID, ESNTL_ID, MBTLNUM AS MOBLPHONNO, |
|
| 26 |
+ '-' ORGNZT_NM, AUTHOR_CODE AS AUTHORITY, DEPT |
|
| 27 |
+ FROM COMVNUSERMASTER A |
|
| 28 |
+ INNER JOIN LETTNEMPLYRSCRTYESTBS B ON A.ESNTL_ID = B.SCRTY_DTRMN_TRGET_ID |
|
| 29 |
+ WHERE CONCAT(USER_SE, USER_ID) = ?" |
|
| 30 |
+ |
|
| 31 |
+ jdbcAuthoritiesByUsernameQuery="SELECT A.SCRTY_DTRMN_TRGET_ID USER_ID, A.AUTHOR_CODE AUTHORITY |
|
| 32 |
+ FROM LETTNEMPLYRSCRTYESTBS A, COMVNUSERMASTER B |
|
| 33 |
+ WHERE A.SCRTY_DTRMN_TRGET_ID = B.ESNTL_ID AND B.USER_ID = ?" |
|
| 34 |
+ |
|
| 35 |
+ jdbcMapClass="itn.let.uat.uia.service.impl.EgovSessionMapping" |
|
| 36 |
+ |
|
| 37 |
+ requestMatcherType="regex" |
|
| 38 |
+ hash="plaintext" |
|
| 39 |
+ hashBase64="false" |
|
| 40 |
+ |
|
| 41 |
+ concurrentMaxSessons="999" |
|
| 42 |
+ concurrentExpiredUrl="/" |
|
| 43 |
+ |
|
| 44 |
+ defaultTargetUrl="/uat/uia/actionMain.do" |
|
| 45 |
+ |
|
| 46 |
+ /> |
|
| 47 |
+ |
|
| 48 |
+<!--원 소스 --> |
|
| 49 |
+<!-- defaultTargetUrl="/uat/uia/actionMain.do" --> |
|
| 50 |
+ |
|
| 51 |
+ <!-- sqlHierarchicalRoles=" |
|
| 52 |
+ SELECT a.CHLDRN_ROLE child, a.PARNTS_ROLE parent |
|
| 53 |
+ FROM LETTNROLES_HIERARCHY a LEFT JOIN LETTNROLES_HIERARCHY b on (a.CHLDRN_ROLE = b.PARNTS_ROLE)" --> |
|
| 54 |
+ |
|
| 55 |
+ <egov-security:secured-object-config id="securedObjectConfig" |
|
| 56 |
+ roleHierarchyString=" |
|
| 57 |
+ ROLE_ADMIN > ROLE_USER_MEMBER |
|
| 58 |
+ ROLE_USER_MEMBER > ROLE_ANONYMOUS" |
|
| 59 |
+ |
|
| 60 |
+ sqlRolesAndUrl=" |
|
| 61 |
+ SELECT a.ROLE_PTTRN url, b.AUTHOR_CODE authority |
|
| 62 |
+ FROM LETTNROLEINFO a, LETTNAUTHORROLERELATE b |
|
| 63 |
+ WHERE a.ROLE_CODE = b.ROLE_CODE AND a.ROLE_TY = 'url' |
|
| 64 |
+ ORDER BY a.ROLE_SORT" |
|
| 65 |
+ |
|
| 66 |
+ sqlRolesAndMethod=" |
|
| 67 |
+ SELECT a.ROLE_PTTRN method, b.AUTHOR_CODE authority |
|
| 68 |
+ FROM LETTNROLEINFO a, LETTNAUTHORROLERELATE b |
|
| 69 |
+ WHERE a.ROLE_CODE = b.ROLE_CODE AND a.ROLE_TY = 'method' |
|
| 70 |
+ ORDER BY a.ROLE_SORT" |
|
| 71 |
+ |
|
| 72 |
+ sqlRolesAndPointcut=" |
|
| 73 |
+ SELECT a.ROLE_PTTRN pointcut, b.AUTHOR_CODE authority |
|
| 74 |
+ FROM LETTNROLEINFO a, LETTNAUTHORROLERELATE b |
|
| 75 |
+ WHERE a.ROLE_CODE = b.ROLE_CODE AND a.ROLE_TY = 'pointcut' |
|
| 76 |
+ ORDER BY a.ROLE_SORT" |
|
| 77 |
+ |
|
| 78 |
+ sqlRegexMatchedRequestMapping=" |
|
| 79 |
+ SELECT a.resource_pattern uri, b.authority authority |
|
| 80 |
+ FROM LETTNROLEINFO a, LETTNAUTHORROLERELATE b |
|
| 81 |
+ WHERE a.ROLE_CODE = b.ROLE_CODE AND a.ROLE_TY = 'regex' |
|
| 82 |
+ ORDER BY a.ROLE_SORT" |
|
| 83 |
+ |
|
| 84 |
+ /> |
|
| 85 |
+ |
|
| 86 |
+ <egov-security:initializer id="initializer" supportMethod="true" supportPointcut="false" /> |
|
| 87 |
+ |
|
| 88 |
+ <!-- URL에 세미콜론(semicolon)허용 여부(기본값/false) --> |
|
| 89 |
+ <bean id="egovStrictHttpFirewall" class="org.springframework.security.web.firewall.StrictHttpFirewall"> |
|
| 90 |
+ <property name="allowSemicolon" value="true"/> |
|
| 91 |
+ </bean> |
|
| 92 |
+ <security:http-firewall ref="egovStrictHttpFirewall"/> |
|
| 93 |
+ |
|
| 94 |
+</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
... | ... | @@ -113,46 +113,47 @@ |
| 113 | 113 |
<tbody> |
| 114 | 114 |
<tr> |
| 115 | 115 |
<td><span class="font_b">resultCode</span></td> |
| 116 |
- <td>성공 여부("0" 아니면 실패)</td>
|
|
| 116 |
+ <td>성공 여부 ("0" 이면 성공, 그 외는 실패)</td>
|
|
| 117 | 117 |
<td>String</td> |
| 118 | 118 |
</tr> |
| 119 | 119 |
<tr> |
| 120 | 120 |
<td><span class="font_b">data</span></td> |
| 121 |
- <td>결과값 객체(성공 : 데이터, 실패 : 메시지)</td> |
|
| 122 |
- <td>Object</td> |
|
| 121 |
+ <td>응답 결과 객체 (성공 시 배열, 실패 시 메시지)</td> |
|
| 122 |
+ <td>Array<Object></td> |
|
| 123 | 123 |
</tr> |
| 124 | 124 |
<tr> |
| 125 |
- <td><span class="font_b">[data].msgGroupId</span></td> |
|
| 126 |
- <td>메시지 그룹 ID</td> |
|
| 125 |
+ <td><span class="font_b">data[].userId</span></td> |
|
| 126 |
+ <td>사용자 ID</td> |
|
| 127 | 127 |
<td>String</td> |
| 128 | 128 |
</tr> |
| 129 | 129 |
<tr> |
| 130 |
- <td><span class="font_b">[data].msgType</span></td> |
|
| 131 |
- <td>메시지 타입(4 : 단문, 6 : 장문)</td> |
|
| 130 |
+ <td><span class="font_b">data[].senderKey</span></td> |
|
| 131 |
+ <td>발신자 키</td> |
|
| 132 | 132 |
<td>String</td> |
| 133 | 133 |
</tr> |
| 134 | 134 |
<tr> |
| 135 |
- <td><span class="font_b">[data].blockCnt</span></td> |
|
| 136 |
- <td>수신거부 건수</td> |
|
| 135 |
+ <td><span class="font_b">data[].phoneNumber</span></td> |
|
| 136 |
+ <td>수신자 전화번호</td> |
|
| 137 | 137 |
<td>String</td> |
| 138 | 138 |
</tr> |
| 139 | 139 |
<tr> |
| 140 |
- <td><span class="font_b">[data].failCnt</span></td> |
|
| 141 |
- <td>전송 실패 건수</td> |
|
| 140 |
+ <td><span class="font_b">data[].yellowId</span></td> |
|
| 141 |
+ <td>카카오톡 채널 ID</td> |
|
| 142 | 142 |
<td>String</td> |
| 143 | 143 |
</tr> |
| 144 | 144 |
<tr> |
| 145 |
- <td><span class="font_b">[data].successCnt</span></td> |
|
| 146 |
- <td>성공 건수</td> |
|
| 145 |
+ <td><span class="font_b">data[].firstRegistPnttm</span></td> |
|
| 146 |
+ <td>최초 등록 시각 (yyyy‑MM‑dd HH:mm:ss)</td> |
|
| 147 | 147 |
<td>String</td> |
| 148 | 148 |
</tr> |
| 149 | 149 |
<tr> |
| 150 |
- <td><span class="font_b">[data].test_yn</span></td> |
|
| 151 |
- <td>테스트 데이터 여부</td> |
|
| 150 |
+ <td><span class="font_b">data[].firstRegisterId</span></td> |
|
| 151 |
+ <td>최초 등록자 ID</td> |
|
| 152 | 152 |
<td>String</td> |
| 153 | 153 |
</tr> |
| 154 | 154 |
</tbody> |
| 155 | 155 |
</table> |
| 156 |
+ |
|
| 156 | 157 |
<div class="table_info"> |
| 157 | 158 |
<p>※ JSON 객체로 응답합니다.</p> |
| 158 | 159 |
</div> |
... | ... | @@ -173,25 +174,19 @@ |
| 173 | 174 |
</p> |
| 174 | 175 |
<div class="indent_t1"> |
| 175 | 176 |
<p> |
| 176 |
- <span>"msgGroupId"</span>:"MSGGID_0000000000000" |
|
| 177 |
+ ,<span>"senderKey"</span>:"6691434xxxxxxxxxxxxxxxxxxxxxxxxx" |
|
| 177 | 178 |
</p> |
| 178 | 179 |
<p> |
| 179 |
- ,<span>"msgType"</span>:"SMS" |
|
| 180 |
+ ,<span>""phoneNumber"</span>:"010xxxxxxxx" |
|
| 180 | 181 |
</p> |
| 181 | 182 |
<p> |
| 182 |
- ,<span>"resultCode"</span>:"0" |
|
| 183 |
+ ,<span>"yellowId"</span>:"@ID" |
|
| 183 | 184 |
</p> |
| 184 | 185 |
<p> |
| 185 |
- ,<span>"blockCnt"</span>:"0" |
|
| 186 |
+ ,<span>"firstRegistPnttm"</span>:"2025-10-05 18:08:58" |
|
| 186 | 187 |
</p> |
| 187 | 188 |
<p> |
| 188 |
- ,<span>"failCnt"</span>:"0" |
|
| 189 |
- </p> |
|
| 190 |
- <p> |
|
| 191 |
- ,<span>"successCnt"</span>:"3" |
|
| 192 |
- </p> |
|
| 193 |
- <p> |
|
| 194 |
- ,<span>"test_yn"</span>:null |
|
| 189 |
+ ,<span>"firstRegisterId"</span>:"userId" |
|
| 195 | 190 |
</p> |
| 196 | 191 |
</div> |
| 197 | 192 |
<p>}</p> |
... | ... | @@ -207,10 +202,10 @@ |
| 207 | 202 |
<p>{</p> |
| 208 | 203 |
<div class="indent"> |
| 209 | 204 |
<p> |
| 210 |
- <span>"resultCode"</span>:"1040" |
|
| 205 |
+ <span>"resultCode"</span>:"401" |
|
| 211 | 206 |
</p> |
| 212 | 207 |
<p> |
| 213 |
- ,<span>"data"</span>:"치환 데이터 오류" |
|
| 208 |
+ ,<span>"message"</span>:"Unauthorized" |
|
| 214 | 209 |
</p> |
| 215 | 210 |
</div> |
| 216 | 211 |
<p class="l_code">}</p> |
Add a comment
Delete comment
Once you delete this comment, you won't be able to recover it. Are you sure you want to delete this comment?