From e5a3e0654d41d35497f0dace15594039540d7c87 Mon Sep 17 00:00:00 2001 From: Rinjae Date: Mon, 8 Dec 2025 18:14:03 +0900 Subject: [PATCH] =?UTF-8?q?-=20popup=20text=20->=20html=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=20-=20=ED=9A=8C=EC=9B=90=EA=B0=80=EC=9E=85=20?= =?UTF-8?q?=EC=99=84=EB=A3=8C=20=ED=8E=98=EC=9D=B4=EC=A7=80=20=EC=A3=BC?= =?UTF-8?q?=EC=86=8C=20=EB=B6=84=EB=A6=AC=20-=20=EC=B4=88=EB=8C=80=20?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=20=EB=94=94=EC=9E=90=EC=9D=B8=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/UserRegisterController.java | 36 +++- .../static/js/popup/custom-popups.js | 10 +- .../apps/register/userDecisionAccept.html | 107 ++++++----- .../apps/register/userDecisionProcess.html | 178 +++++++++++------- 4 files changed, 207 insertions(+), 124 deletions(-) diff --git a/src/main/java/com/eactive/apim/portal/apps/user/controller/UserRegisterController.java b/src/main/java/com/eactive/apim/portal/apps/user/controller/UserRegisterController.java index af4da40..f6f872c 100644 --- a/src/main/java/com/eactive/apim/portal/apps/user/controller/UserRegisterController.java +++ b/src/main/java/com/eactive/apim/portal/apps/user/controller/UserRegisterController.java @@ -113,6 +113,7 @@ public class UserRegisterController { @Valid @ModelAttribute("portalUser") PortalUserRegistrationDTO portalUserRegistrationDTO, BindingResult bindingResult, HttpSession session, + RedirectAttributes redirectAttributes, Model model) { try { if (bindingResult.hasErrors()) { @@ -135,10 +136,10 @@ public class UserRegisterController { setModelForError(session, model, agreement, portalUserRegistrationDTO, response.getMessage()); return MAIN_USER_REGISTER; } - // 성공 시 + // 성공 시 PRG 패턴 적용: 결과 페이지로 리다이렉트 session.removeAttribute("invitationToken"); - model.addAttribute("message", "회원가입이 완료되었습니다."); - return invitationToken != null ? MAIN_EMAIL_COMPLETED : MAIN_REGISTER_RESULT; + redirectAttributes.addFlashAttribute("message", "회원가입이 완료되었습니다."); + return invitationToken != null ? "redirect:/signup/complete/corporate" : "redirect:/signup/complete"; } catch (Exception e) { setModelForError(session, model, agreement, portalUserRegistrationDTO, "처리 중 오류가 발생했습니다: " + e.getMessage()); @@ -146,6 +147,28 @@ public class UserRegisterController { } } + /** + * 개인회원 가입 완료 페이지 + */ + @GetMapping("/signup/complete") + public String showRegistrationComplete(Model model) { + if (!model.containsAttribute("message")) { + return "redirect:/"; + } + return MAIN_REGISTER_RESULT; + } + + /** + * 법인회원 가입 완료 페이지 + */ + @GetMapping("/signup/complete/corporate") + public String showCorporateRegistrationComplete(Model model) { + if (!model.containsAttribute("message")) { + return "redirect:/"; + } + return MAIN_EMAIL_COMPLETED; + } + @GetMapping("/signup/decision") public String showDecisionPage(@RequestParam(name = "invitation", required = false) String invitationToken, HttpSession session, @@ -232,6 +255,7 @@ public class UserRegisterController { BindingResult bindingResult, @RequestParam(name = "invitationToken") String invitationToken, RedirectAttributes redirectAttributes, + HttpSession session, Model model) { agreementValidator.validate(agreement, bindingResult); @@ -253,6 +277,12 @@ public class UserRegisterController { } else { ValidationResponse response = userRegisterFacade.processInvitation(action, invitation.get()); + // 초대 처리 완료 후 세션에서 초대 관련 속성 제거 + session.removeAttribute("pendingInvitation"); + session.removeAttribute("pendingInvitationToken"); + session.removeAttribute("pendingInvitationOrgName"); + session.removeAttribute("decisionToken"); + redirectAttributes.addFlashAttribute("success", response.getMessage()); return "redirect:/"; } diff --git a/src/main/resources/static/js/popup/custom-popups.js b/src/main/resources/static/js/popup/custom-popups.js index 98b2c09..23a4320 100644 --- a/src/main/resources/static/js/popup/custom-popups.js +++ b/src/main/resources/static/js/popup/custom-popups.js @@ -6,7 +6,7 @@ const customPopups = { */ showAlert: function (message, callback) { // 메시지 설정 - $('#customAlertMessage').text(message); + $('#customAlertMessage').html(message); // 팝업 표시 (modal 구조 사용) $('#customAlert').show(); @@ -102,7 +102,7 @@ const customPopups = { // 팝업 내용 설정 $('#passwordPopupTitle').text(title); - $('#passwordPopupMessage').text(message); + $('#passwordPopupMessage').html(message); // 입력 필드 및 에러 초기화 $('#passwordPopupInput').val('').removeClass('error'); @@ -216,7 +216,7 @@ const customPopups = { */ showConfirm: function (message, callback) { // 메시지 설정 - $('#customConfirmMessage').text(message); + $('#customConfirmMessage').html(message); // 팝업 표시 (modal 구조 사용) $('#customConfirm').show(); @@ -302,7 +302,7 @@ const customPopups = { $(document).off('keydown.customConfirmEsc'); }, showEmailValidationPopup: function (message, onConvertCallback, onChangeEmailCallback) { - $('#emailValidationPopupMessage').text(message); + $('#emailValidationPopupMessage').html(message); $('#emailValidationPopup').css('display', 'flex'); $('#emailConvertButton').one('click', function () { @@ -320,7 +320,7 @@ const customPopups = { }); }, showEmailResendPopup: function (message, loginId) { - $('#emailResendMessage').text(message); + $('#emailResendMessage').html(message); $('#userLoginId').val(loginId); $('#emailResend').show(); }, diff --git a/src/main/resources/templates/views/apps/register/userDecisionAccept.html b/src/main/resources/templates/views/apps/register/userDecisionAccept.html index cc022d5..0ee91e6 100644 --- a/src/main/resources/templates/views/apps/register/userDecisionAccept.html +++ b/src/main/resources/templates/views/apps/register/userDecisionAccept.html @@ -1,63 +1,70 @@ - + layout:decorate="~{layout/kjbank_title_layout}"> -
-
-
-

법인회원 초대

-
-
-
- - - +
+
+ 법인회원 초대 +

법인회원 초대

+
+
-
-

- 님 안녕하세요.

- 에서 귀하를 Kbank API Portal 법인회원으로 초대하였습니다.
-
광주은행과 함께 금융서비스를 손쉽게 개발해 보세요.

- 로그인 하여 법인회원 전환을 진행하세요.
-

+ +
+ - \ No newline at end of file + diff --git a/src/main/resources/templates/views/apps/register/userDecisionProcess.html b/src/main/resources/templates/views/apps/register/userDecisionProcess.html index c4246a3..5dd7769 100644 --- a/src/main/resources/templates/views/apps/register/userDecisionProcess.html +++ b/src/main/resources/templates/views/apps/register/userDecisionProcess.html @@ -1,93 +1,139 @@ - + layout:decorate="~{layout/kjbank_title_layout}"> -
-
-
-

법인회원 초대

-
-
- -
+
+
+ 법인회원 초대 +

법인회원 초대

+
+
+ + +
+
+ + + + +
+ + +
+

초대 정보

+
+ + + + + + + - + -
-

초대 수락

-
-
-

- 님 안녕하세요.

- 에서 귀하를 Kbank API Portal 법인회원으로 초대하였습니다.
-
Kbank와 함께 금융서비스를 손쉽게 개발해 보세요.

- 초대를 수락하시면 법인회원으로 전환됩니다.
-

-
-
-

- 초대코드: - -

-

- 이메일로 받은 초대코드와 일치하는지 확인해 주세요. -

-
-
- -
- + +
+ +
+ + +
+
+
+ + + -
+ - \ No newline at end of file +