33c64972f8
- 서비스 소개 페이지 디자인/스타일 대폭 개선 - 웹훅/OAuth2 개발 가이드 문구 및 텍스트 업데이트/템플릿화
130 lines
5.7 KiB
HTML
130 lines
5.7 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="ko" xmlns:th="http://www.thymeleaf.org"
|
|
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
|
|
layout:decorate="~{layout/djbank_title_layout}">
|
|
<body>
|
|
<section layout:fragment="title">
|
|
<div class="page-title-banner">
|
|
<img th:src="@{/img/img_title_bg.png}" alt="법인회원 초대" class="title-image">
|
|
<h1>법인회원 초대</h1>
|
|
</div>
|
|
</section>
|
|
|
|
<th:block layout:fragment="contentFragment">
|
|
<div class="org-register-page">
|
|
<div class="org-register-container">
|
|
<!-- Hidden Fields -->
|
|
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
|
|
|
|
<!-- Alert Container -->
|
|
<div id="alertContainer"></div>
|
|
|
|
<!-- Invitation Info Section -->
|
|
<div class="org-section-header org-section-header--agreement">
|
|
<h3>초대 정보</h3>
|
|
</div>
|
|
|
|
<div class="invitation_alert_banner">
|
|
<div class="banner-content-wrapper">
|
|
<div class="banner-icon-area">
|
|
<svg width="32" height="32" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
<circle cx="12" cy="12" r="10" fill="#E8F1FF" stroke="#1976D2" stroke-width="2"/>
|
|
<path d="M12 8V13" stroke="#1976D2" stroke-width="2" stroke-linecap="round"/>
|
|
<circle cx="12" cy="16" r="1.25" fill="#1976D2"/>
|
|
</svg>
|
|
</div>
|
|
<div class="banner-text-area">
|
|
<strong>
|
|
<span th:text="${userName}"></span>님, 법인회원 초대가 도착했습니다.
|
|
</strong>
|
|
<p>
|
|
<strong><span th:text="${orgName}"></span></strong>에서 [[${brandName}]] API Portal 법인회원으로 초대하였습니다.<br>
|
|
초대를 수락하시면 법인회원으로 전환됩니다.
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Agreement Section -->
|
|
<th:block th:replace="~{apps/register/userAgreementContent :: agreementContent(${termsOfUse}, ${privacyCollect})}"></th:block>
|
|
|
|
<form id="invitationForm" th:action="@{/signup/decision}" method="post">
|
|
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}"/>
|
|
<input type="hidden" name="invitationToken" th:value="${invitationCode}"/>
|
|
<input type="hidden" id="actionInput" name="action" value=""/>
|
|
|
|
<!-- Action Buttons -->
|
|
<div class="org-action-buttons">
|
|
<button type="button" class="btn btn-secondary" id="rejectButton">거절</button>
|
|
<button type="button" class="btn btn-primary" id="acceptButton">수락</button>
|
|
</div>
|
|
</form>
|
|
|
|
<!-- Loading Overlay -->
|
|
<div class="org-loading-overlay" id="loadingOverlay">
|
|
<div class="spinner"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</th:block>
|
|
|
|
<th:block layout:fragment="contentScript">
|
|
<script th:replace="~{apps/register/userAgreementContent :: agreementScript}"></script>
|
|
<script th:if="${error}" th:inline="javascript">
|
|
$(document).ready(function () {
|
|
customPopups.showAlert([[${error}]]);
|
|
});
|
|
</script>
|
|
<script>
|
|
document.addEventListener('DOMContentLoaded', function () {
|
|
let form = document.getElementById('invitationForm');
|
|
let agreementForm = document.getElementById('agreementForm');
|
|
let acceptButton = document.getElementById('acceptButton');
|
|
let rejectButton = document.getElementById('rejectButton');
|
|
|
|
function submitForm(action) {
|
|
if (action === 'accept') {
|
|
agreementForm.classList.add('was-validated');
|
|
|
|
if (agreementForm.checkValidity()) {
|
|
// 약관 동의 폼의 데이터를 hidden input으로 추가
|
|
let agreementFormData = new FormData(agreementForm);
|
|
for (let pair of agreementFormData.entries()) {
|
|
if (!form.querySelector('input[name="' + pair[0] + '"]')) {
|
|
let input = document.createElement('input');
|
|
input.type = 'hidden';
|
|
input.name = pair[0];
|
|
input.value = pair[1];
|
|
form.appendChild(input);
|
|
}
|
|
}
|
|
document.getElementById('actionInput').value = action;
|
|
document.getElementById('loadingOverlay').classList.add('active');
|
|
form.submit();
|
|
} else {
|
|
customPopups.showAlert('모든 약관에 동의해 주세요.');
|
|
}
|
|
} else {
|
|
document.getElementById('actionInput').value = action;
|
|
document.getElementById('loadingOverlay').classList.add('active');
|
|
form.submit();
|
|
}
|
|
}
|
|
|
|
acceptButton.addEventListener('click', function () {
|
|
submitForm('accept');
|
|
});
|
|
|
|
rejectButton.addEventListener('click', function () {
|
|
customPopups.showConfirm('초대를 거절하시겠습니까?', function (confirmed) {
|
|
if (confirmed) {
|
|
submitForm('reject');
|
|
}
|
|
});
|
|
});
|
|
});
|
|
</script>
|
|
</th:block>
|
|
</body>
|
|
</html>
|