949 lines
55 KiB
PHP
949 lines
55 KiB
PHP
@extends('web.layouts.auth')
|
||
|
||
@section('title', '회원가입 약관동의 | PIN FOR YOU')
|
||
@section('meta_description', '회원가입 약관동의 단계입니다.')
|
||
@section('canonical', url('/auth/register/terms'))
|
||
|
||
@section('h1', '약관 동의')
|
||
@section('desc', '필수 약관에 동의하시면 다음 단계(본인인증)로 진행합니다.')
|
||
@section('card_aria', '회원가입 Step1 - 약관 동의')
|
||
@section('show_cs_links', true)
|
||
|
||
@section('auth_content')
|
||
<div class="terms-wrap">
|
||
{{-- 진행 단계 --}}
|
||
<div class="terms-steps" aria-label="진행 단계">
|
||
<div class="terms-step">가입정보확인</div>
|
||
<div class="terms-step is-active">약관/인증 확인</div>
|
||
<div class="terms-step">가입정보입력</div>
|
||
</div>
|
||
|
||
{{-- <form id="regTermsForm" class="terms-form" method="POST" action="{{ route('web.auth.register.terms.submit') }}" novalidate>--}}
|
||
<form id="regTermsForm" class="terms-form" method="POST" action="" novalidate>
|
||
@csrf
|
||
|
||
{{-- 전체 동의 --}}
|
||
<div class="terms-card terms-card--all">
|
||
<label class="chk">
|
||
<input type="checkbox" id="agree_all">
|
||
<span class="chk-ui" aria-hidden="true"></span>
|
||
<span class="chk-text">
|
||
<span class="chk-title">전체 동의</span>
|
||
<span class="chk-sub">필수 및 선택 항목을 모두 포함합니다.</span>
|
||
</span>
|
||
</label>
|
||
</div>
|
||
|
||
{{-- 약관 리스트 --}}
|
||
<div class="terms-card">
|
||
{{-- [필수] 이용약관 --}}
|
||
<div class="terms-row">
|
||
<label class="chk">
|
||
<input type="checkbox" name="agree_terms" id="agree_terms" value="1" required>
|
||
<span class="chk-ui" aria-hidden="true"></span>
|
||
<span class="chk-text">
|
||
<span class="badge badge--req">필수</span>
|
||
<span class="terms-label">이용약관 동의</span>
|
||
</span>
|
||
</label>
|
||
|
||
<button type="button" class="terms-view" data-toggle="t_terms">내용보기</button>
|
||
</div>
|
||
<div class="terms-body" id="t_terms" hidden>
|
||
<div class="terms-scroll">
|
||
<h4>이용약관</h4>
|
||
|
||
<div class="terms-legal">
|
||
<h5>제 1 조 (목적)</h5>
|
||
<p>이 약관은 ㈜플러스메이커(이하 "회사")가 제공하는 핀포유(이하 “사이트”) 관련 제반 서비스 (이하 "서비스")의 이용조건 및 절차에 관한 회사와 회원간의 권리 의무 및 책임사항, 기타 필요한 사항을 규정함을 목적으로 합니다.</p>
|
||
|
||
<h5>제 2 조 (약관의 효력 및 변경)</h5>
|
||
<p>① 이 약관은 서비스 화면이나 기타의 방법으로 이용고객에게 공지함으로써 효력을 발생합니다.</p>
|
||
<p>② 사이트는 이 약관의 내용을 변경할 수 있으며, 변경된 약관은 제①항과 같은 방법으로 공지 또는 통지함으로써 효력을 발생합니다.</p>
|
||
|
||
<h5>제 3 조 (용어의 정의)</h5>
|
||
<p>이 약관에서 사용하는 용어의 정의는 다음과 같습니다.</p>
|
||
<p>① 회원 : 사이트와 서비스 이용계약을 체결하거나 이용자 아이디(ID)를 부여받은 개인을 말합니다.</p>
|
||
<p>② 아이디(ID) : 회원의 식별과 서비스 이용을 위하여 회원이 정하고 사이트가 승인하는 이메일 형식을 말합니다</p>
|
||
<p>③ 비밀번호 : 회원이 부여 받은 아이디(ID)와 일치된 회원임을 확인하고, 회원 자신의 비밀을 보호하기 위하여 회원이 정한 영문자와 숫자, 특수문자의 조합을 말합니다.</p>
|
||
<p>⑤ 회원탈퇴 : 사이트 또는 회원이 서비스 이용계약을 취소하는 것을 말합니다.</p>
|
||
|
||
<h5>제 4 조 (회원가입)</h5>
|
||
<p>① 사이트에서 제공하는 절차에 맞춰 이용약관 동의 후 본인인증 절차를 완료한 후, 가입 양식에 따라 회원정보를 기입함으로서 회원가입을 신청합니다.</p>
|
||
<p>② 사이트는 신청자에 대하여 제3항, 제4항의 경우를 예외로 하여 회원 등록합니다..</p>
|
||
<p>③ 사이트는 다음에 해당하는 경우에 그 회원 등록을 제한사유가 해소될 때까지 유보할 수 있습니다.</p>
|
||
<ul>
|
||
<li>가. 서비스 관련 설비에 여유가 없는 경우</li>
|
||
<li>나. 기술상 지장이 있는 경우</li>
|
||
<li>다. 기타 사이트가 필요하다고 인정되는 경우</li>
|
||
</ul>
|
||
<p>④ 사이트는 신청자가 다음에 해당하는 경우에는 회원 등록을 거부할 수 있습니다.</p>
|
||
<ul>
|
||
<li>가. 다른 개인(사이트)의 명의를 사용하여 신청한 경우</li>
|
||
<li>나. 이용자 정보를 허위로 기재하여 신청한 경우</li>
|
||
<li>다. 사회의 안녕질서 또는 미풍양속을 저해할 목적으로 신청한 경우</li>
|
||
<li>라. 기타 사이트 소정의 이용신청요건을 충족하지 못하는 경우</li>
|
||
</ul>
|
||
|
||
<h5>제 5 조 (회원 탈퇴 및 이용정지)</h5>
|
||
<p>① 회원은 사이트에 언제든지 탈퇴를 요청할 수 있으며 사이트는 요청사항을 명확히 확인한 즉시 회원탈퇴를 처리합니다</p>
|
||
<p>② 회원이 다음 각 호의 사유에 해당하는 경우, 사이트는 회원자격을 제한 및 정지시킬 수 있습니다.</p>
|
||
<ol>
|
||
<li>회원 가입 시 허위 정보를 기재한 경우</li>
|
||
<li>타인 명의 또는 전자결제 수단을 도용 또는 의심되는 경우</li>
|
||
<li>사이트가 제공하는 관련 서비스 프로그램에 대한 허가되지 않은 접근 시도 및 변경을 시도하는 경우</li>
|
||
<li>기타 사이트가 필요하다고 인정되는 경우</li>
|
||
</ol>
|
||
<p>③ 회원 자격 제한 및 정지가 이루어진 경우 회원은 고객센터 상담을 통해 사유 및 해결 방안에 대해 확인할 수 있습니다.</p>
|
||
|
||
<h5>제 6 조 (이용자정보의 변경)</h5>
|
||
<p>회원은 회원가입 시 기재했던 회원정보가 변경되었을 경우에는, 사이트 개인정보 확인 페이지를 통해 으로 수정하여야 하며 변경하지 않음으로 인하여 발생되는 모든 문제의 책임은 회원에게 있습니다.</p>
|
||
|
||
<h5>제 7 조 (사이트의 의무)</h5>
|
||
<p>① 사이트는 법령과 이 약관이 금지하거나 공서양속에 반하는 행위를 하지 않으며 이 약관이 정하는 바에 따라 지속적이고, 안정적으로 재화․용역을 제공하는데 최선을 다하여야 합니다.</p>
|
||
<p>② 사이트는 서비스 제공과 관련하여 취득한 회원의 개인정보를 회원의 동의없이 타인에게 누설, 공개 또는 배포할 수 없으며, 서비스관련 업무 이외의 상업적 목적으로 사용할 수 없습니다. 단, 다음 각 호의 1에 해당하는 경우는 예외입니다.</p>
|
||
<ul>
|
||
<li>가. 전기통신기본법 등 법률의 규정에 의해 국가기관의 요구가 있는 경우</li>
|
||
<li>나. 범죄에 대한 수사상의 목적이 있거나 정보통신윤리 위원회의 요청이 있는 경우</li>
|
||
<li>다. 기타 관계법령에서 정한 정차에 따른 요청이 있는 경우</li>
|
||
</ul>
|
||
<p>③ 사이트는 이 약관에서 정한 바에 따라 지속적, 안정적으로 서비스를 제공할 의무가 있습니다.</p>
|
||
|
||
<h5>제 8 조 (회원의 의무)</h5>
|
||
<p>① 회원은 서비스 이용 시 다음 각 호의 행위를 하지 않아야 합니다.</p>
|
||
<ul>
|
||
<li>가. 다른 회원의 ID를 부정하게 사용하는 행위</li>
|
||
<li>나. 서비스에서 얻은 정보를 사이트의 사전승낙 없이 회원의 이용 이외의 목적으로 복제하거나 이를 변경, 출판 및 방송 등에 사용하거나 타인에게 제공하는 행위</li>
|
||
<li>다. 사이트의 저작권, 타인의 저작권 등 기타 권리를 침해하는 행위</li>
|
||
<li>라. 공공질서 및 미풍양속에 위반되는 내용의 정보, 문장, 도형 등을 타인에게 유포하는 행위</li>
|
||
<li>마. 범죄와 결부된다고 객관적으로 판단되는 행위</li>
|
||
<li>바. 기타 관계법령에 위배되는 행위</li>
|
||
</ul>
|
||
<p>② 회원은 관계법령, 이 약관에서 규정하는 사항, 서비스 이용 안내 및 주의 사항을 준수하여야 합니다.</p>
|
||
<p>③ 회원은 내용별로 사이트가 서비스 공지사항에 게시하거나 별도로 공지한 이용 제한 사항을 준수하여야 합니다.</p>
|
||
|
||
<h5>제 9 조 (회원 아이디(ID)와 비밀번호 관리에 대한 회원의 의무)</h5>
|
||
<p>① 아이디(ID)와 비밀번호에 대한 모든 관리는 회원에게 책임이 있습니다. 회원에게 부여된 아이디(ID)와 비밀번호의 관리소홀, 부정사용에 의하여 발생하는 모든 결과에 대한 전적인 책임은 회원에게 있습니다.</p>
|
||
<p>② 자신의 아이디(ID)가 부정하게 사용된 경우 또는 기타 보안 위반에 대하여, 회원은 반드시 사이트에 그 사실을 통보해야 합니다.</p>
|
||
|
||
<h5>제 10 조 (서비스 이용료)</h5>
|
||
<p>① 사이트를 통해 상품 구매 시 휴대폰소액결제 서비스를 이용해 결제하는 경우 회사가 정한 규정에 따라 서비스 이용료가 부과됩니다.</p>
|
||
|
||
<h5>제 11 조 (서비스 제한 및 정지)</h5>
|
||
<p>① 사이트는 전시, 사변, 천재지변 또는 이에 준하는 국가비상사태가 발생하거나 발생할 우려가 있는 경우와 전기통신사업법에 의한 기간통신 사업자가 전기통신서비스를 중지하는 등 기타 불가항력적 사유가 있는 경우에는 서비스의 전부 또는 일부를 제한하거나 정지할 수 있습니다.</p>
|
||
<p>② 사이트는 제1항의 규정에 의하여 서비스의 이용을 제한하거나 정지할 때에는 그 사유 및 제한기간 등을 지체없이 회원에게 알려야 합니다.</p>
|
||
|
||
<h5>제 12 조 (정보의 변경)</h5>
|
||
<p>회원이 주소, 비밀번호 등 고객정보를 변경하고자 하는 경우에는 홈페이지의 회원정보 변경 서비스를 이용하여 변경할 수 있습니다.</p>
|
||
|
||
<h5>제 13 조 (면책조항)</h5>
|
||
<p>① 회사는 다음 각 호에 해당하는 경우에는 책임을 지지 않습니다.</p>
|
||
<ol>
|
||
<li>전시, 사변, 천재지변 또는 이에 준하는 국가 비상 사태 등 불가항력적인 경우</li>
|
||
<li>회원의 고의 또는 과실로 인하여 손해가 발생한 경우</li>
|
||
<li>전기통신사업법에 의한 타 기간 통신사업자가 제공하는 전기통신서비스 장애로 인한 경우</li>
|
||
</ol>
|
||
<p>② 회사는 회원의 귀책 사유로 인한 서비스 이용의 장애에 대하여 책임을 지지 아니합니다.</p>
|
||
|
||
<h5>제 14 조 (관할법원)</h5>
|
||
<p>① 회사의 요금체계 등 서비스 이용과 관련하여 분쟁이 발생될 경우, 회사의 본사 소재지를 관할하는 법원을 관할 법원으로 하여 이를 해결합니다.</p>
|
||
<p>② 서비스 이용과 관련하여 회사와 회원 간의 소송에는 대한민국 법을 적용합니다.</p>
|
||
|
||
<h5>[부칙]</h5>
|
||
<p>(시행일) 이 약관은 2019년 01월부터 시행합니다.</p>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div class="terms-divider"></div>
|
||
|
||
{{-- [필수] 개인정보 --}}
|
||
<div class="terms-row">
|
||
<label class="chk">
|
||
<input type="checkbox" name="agree_privacy" id="agree_privacy" value="1" required>
|
||
<span class="chk-ui" aria-hidden="true"></span>
|
||
<span class="chk-text">
|
||
<span class="badge badge--req">필수</span>
|
||
<span class="terms-label">개인정보 수집·이용 동의</span>
|
||
</span>
|
||
</label>
|
||
|
||
<button type="button" class="terms-view" data-toggle="t_privacy">내용보기</button>
|
||
</div>
|
||
<div class="terms-body" id="t_privacy" hidden>
|
||
<div class="terms-scroll">
|
||
<h4>개인정보 수집·이용 동의</h4>
|
||
|
||
<div class="terms-legal">
|
||
<h5>1. 개인정보의 처리 목적</h5>
|
||
<p>
|
||
주식회사 플러스메이커(이하 “회사”라 함)가 운영하는 “핀포유”는 개인정보를 다음의 목적을 위해 처리합니다.
|
||
처리한 개인정보는 다음의 목적 이외의 용도로는 사용되지 않으며 이용 목적이 변경될 시에는 사전동의를 구할 예정입니다.
|
||
</p>
|
||
<ul>
|
||
<li><strong>(1) 홈페이지 회원가입 및 관리</strong> : 회원 가입의사 확인, 회원자격 유지·관리, 서비스 부정이용 방지, 각종 고지·통지, 고충처리, 분쟁 조정을 위한 기록 보존</li>
|
||
<li><strong>(2) 민원사무 처리</strong> : 민원인의 신원 확인, 민원사항 확인, 사실조사를 위한 연락·통지, 처리결과 통보</li>
|
||
</ul>
|
||
|
||
<h5>2. 개인정보의 항목 및 수집방법</h5>
|
||
<p><strong>(1) 개인정보 수집 항목</strong></p>
|
||
<p>① 회사는 회원가입, 상담, 기타 부가 서비스 제공 등을 위해 아래와 같은 개인정보를 수집하고 있습니다.</p>
|
||
<ul>
|
||
<li>이름, 생년월일, 성별, 전화번호, 이메일, 아이디, 비밀번호, 개인식별값(CI, DI)</li>
|
||
</ul>
|
||
<p>② 또한 서비스 이용과정이나 사업 처리 과정에서 아래와 같은 정보들이 생성되어 수집될 수 있습니다.</p>
|
||
<ul>
|
||
<li>접속 IP 정보, 쿠키, 서비스 이용 및 접속기록</li>
|
||
</ul>
|
||
|
||
<p><strong>(2) 개인정보 수집방법</strong></p>
|
||
<ul>
|
||
<li>홈페이지(회원가입, 문의상담), 서면양식</li>
|
||
<li>제휴사로부터의 제공</li>
|
||
</ul>
|
||
|
||
<h5>3. 개인정보의 처리 및 보유 기간</h5>
|
||
<p>
|
||
회사는 법령에 따른 개인정보 보유·이용기간 또는 정보주체로부터 개인정보를 수집 시에 동의 받은 개인정보 보유·이용기간 내에서 개인정보를 처리·보유합니다.
|
||
또한, 정보통신망 이용촉진 및 정보보호 등에 관한 법률에 따라 1년간 “핀포유”를 이용하지 아니한 회원의 개인정보는 파기하거나 별도 분리되어 보관됩니다.
|
||
그럼에도 회원이 그 보유기간을 별도로 지정하거나, 법률에 근거하여 보존할 필요가 있는 경우는 기존과 같이 안전 관리를 다하여 보관합니다.
|
||
</p>
|
||
|
||
<p><strong>(1) 홈페이지 회원가입 및 관리, 민원사무 처리, 재화 또는 서비스 제공</strong></p>
|
||
<p>
|
||
마케팅 및 광고의 활용과 관련한 개인정보는 수집·이용에 관한 동의일로부터 지체 없이 파기까지 위 이용목적을 위하여 보유·이용됩니다.
|
||
</p>
|
||
|
||
<p><strong>(2) 관계법령에 따른 보관</strong></p>
|
||
<p>
|
||
상법, 전자상거래 등에서의 소비자보호에 관한 법률 등 관계법령의 규정에 의하여 보존할 필요가 있는 경우 회사는 관계법령에서 정한 일정한 기간 동안 회원정보를 보관합니다.
|
||
이 경우 회사는 보관하는 정보를 그 보관의 목적으로만 이용합니다.
|
||
</p>
|
||
<ul>
|
||
<li><strong>통신비밀보호법</strong> : 로그기록, IP 등 (수사기관 요청 시 제공) / <strong>3개월</strong></li>
|
||
<li><strong>전자상거래 등에서의 소비자보호에 관한 법률</strong> : 회원의 불만 또는 분쟁처리에 관한 기록(회원 식별정보, 분쟁처리 기록 등) / <strong>3년</strong></li>
|
||
<li><strong>전자상거래 등에서의 소비자보호에 관한 법률</strong> : 대금결제 및 재화 등의 공급에 관한 기록(회원 식별정보, 계약/청약철회 기록 등) / <strong>5년</strong></li>
|
||
<li><strong>부가가치세법</strong> : 장부, 세금계산서, 수입세금계산서, 영수증 등(과세표준과 세액 신고자료) / <strong>5년</strong></li>
|
||
<li><strong>전자금융거래법</strong> : 전자금융거래에 관한 기록, 상대방에 관한 정보 등 / <strong>5년</strong></li>
|
||
</ul>
|
||
|
||
<h5>4. 개인정보의 제3자 제공에 관한 사항</h5>
|
||
<p>
|
||
① 회사는 회원의 동의가 있거나 법령의 규정에 의한 경우를 제외하고는 어떠한 경우에도 [개인정보 처리방침]에서 고지한 범위를 넘어 회원의 개인정보를 이용하거나
|
||
타인 또는 타기업/기관에 제공하지 않습니다.
|
||
</p>
|
||
<p>
|
||
② 회원의 개인정보를 제공하는 경우에는 개인정보를 제공받는 자, 개인정보 이용 목적, 제공 항목, 보유 및 이용기간을 개별적으로 고지한 후 사전 동의를 구합니다.
|
||
</p>
|
||
<p>다만, 다음의 경우에는 회원의 동의 없이 개인정보를 제공할 수 있습니다.</p>
|
||
<ol>
|
||
<li>서비스 제공에 따른 요금 정산을 위하여 필요한 경우</li>
|
||
<li>통계작성, 학술연구 또는 시장조사를 위하여 개인을 식별할 수 없는 형태로 제공하는 경우</li>
|
||
<li>법령에 특별한 규정이 있는 경우</li>
|
||
</ol>
|
||
|
||
<p>③ 회사는 아래와 같은 경우 이용자의 동의 하에 개인정보를 제3자에게 제공할 수 있습니다.</p>
|
||
<ol>
|
||
<li>물품구매, 유료컨텐츠 이용 등의 배송 및 정산을 위해 이용자의 이름, 전화번호 등이 해당 유료컨텐츠 제공자, 제휴 업자에게 제공될 수 있습니다.</li>
|
||
<li>각종 이벤트 행사에 참여한 회원의 개인정보가 해당 이벤트의 주최자에게 제공될 수 있습니다.</li>
|
||
</ol>
|
||
|
||
<p>
|
||
④ 회사는 회원에게 제공되는 서비스의 질을 향상시키기 위해 여러 분야의 전문 컨텐츠 사업자 혹은 비즈니스 사업자와 함께 제휴를 맺을 수 있습니다.
|
||
</p>
|
||
|
||
<h5>5. 개인정보처리 위탁</h5>
|
||
<p>
|
||
1. 회사는 서비스 향상을 위해서 아래와 같이 개인정보를 위탁하고 있으며, 관계 법령에 따라 위탁계약 시 개인정보가 안전하게 관리될 수 있도록 필요한 사항을 규정하고 있습니다.
|
||
</p>
|
||
<p><strong>회사의 개인정보 위탁처리 기관 및 위탁업무 내용(요약)</strong></p>
|
||
<ul>
|
||
<li><strong>㈜LG U+</strong> : 신용카드 결제, 가상계좌 결제, SMS 발송 (회원탈퇴 또는 위탁계약 종료 시까지 / 법령 기준)</li>
|
||
<li><strong>㈜다날</strong> : 결제(신용카드/가상계좌/휴대폰/계좌이체/상품권 결제), 상품권 발급 (회원탈퇴 또는 위탁계약 종료 시까지 / 법령 기준)</li>
|
||
<li><strong>㈜더즌</strong> : 가상계좌, 계좌출금, 계좌성명조회 (회원탈퇴 또는 위탁계약 종료 시까지 / 법령 기준)</li>
|
||
<li><strong>로움아이티</strong> : 로그인톡 인증 서비스 (별도 저장하지 않음 / 본인인증 업체 보유 정보)</li>
|
||
<li><strong>(주)케이티엠하우스</strong> : 휴대폰번호, 상품권명 (회원 탈퇴 또는 위탁계약 종료 시)</li>
|
||
</ul>
|
||
|
||
<h5>6. 정보주체의 권리·의무 및 그 행사방법</h5>
|
||
<p>이용자는 개인정보주체로서 다음과 같은 권리를 행사할 수 있습니다.</p>
|
||
<p><strong>(1)</strong> 정보주체는 회사에 대해 언제든지 다음 각 호의 개인정보 보호 관련 권리를 행사할 수 있습니다.</p>
|
||
<ol>
|
||
<li>개인정보 열람요구</li>
|
||
<li>오류 등이 있을 경우 정정 요구</li>
|
||
<li>삭제요구</li>
|
||
<li>처리정지 요구</li>
|
||
</ol>
|
||
|
||
<p>
|
||
<strong>(2)</strong> 제1항에 따른 권리 행사는 회사에 대해 개인정보 보호법 시행령 제41조제1항 서식에 따라 서면, 전자우편, 모사전송(FAX) 등을 통하여 하실 수 있으며
|
||
회사는 이에 대해 지체 없이 조치하겠습니다.
|
||
</p>
|
||
|
||
<p><strong>(3)</strong> 정보주체가 정정 또는 삭제를 요구한 경우에는 회사는 완료할 때까지 당해 개인정보를 이용하거나 제공하지 않습니다.</p>
|
||
<p><strong>(4)</strong> 대리인을 통하여 권리 행사를 하실 수 있으며, 이 경우 위임장을 제출하셔야 합니다.</p>
|
||
<p><strong>(5)</strong> 개인정보 열람 및 처리정지 요구는 법령에 의해 제한될 수 있습니다.</p>
|
||
<p><strong>(6)</strong> 다른 법령에서 수집 대상으로 명시된 개인정보는 삭제를 요구할 수 없습니다.</p>
|
||
<p><strong>(8)</strong> 회사는 정보주체 권리 행사 시 요구를 한 자가 본인이거나 정당한 대리인인지를 확인합니다.</p>
|
||
|
||
<h5>7. 개인정보 자동수집 장치의 설치, 운영 및 그 거부에 관한 사항</h5>
|
||
<p>
|
||
회사는 ‘쿠키(cookie)’ 등을 운용합니다. 쿠키란 웹사이트 서버가 이용자의 브라우저에 보내는 작은 텍스트 파일로서 이용자의 컴퓨터 하드디스크에 저장됩니다.
|
||
회사는 다음과 같은 목적을 위해 암호화된 쿠키를 사용합니다.
|
||
</p>
|
||
|
||
<p><strong>(1) 쿠키 등 사용 목적</strong></p>
|
||
<p>
|
||
회원과 비회원의 접속 빈도나 방문 시간 등을 분석, 이용자의 취향과 관심분야를 파악 및 자취 추적,
|
||
각종 이벤트 참여 정도 및 방문 회수 파악 등을 통한 타겟 마케팅 및 개인 맞춤 서비스 제공.
|
||
</p>
|
||
|
||
<p><strong>(2) 쿠키 설정 거부 방법</strong></p>
|
||
<p>
|
||
웹 브라우저 옵션을 통해 쿠키 허용/확인/거부를 선택할 수 있습니다.
|
||
(예: 인터넷 익스플로어) 도구 > 인터넷 옵션 > 개인정보
|
||
(단, 쿠키 설치를 거부하였을 경우 서비스 제공에 어려움이 있을 수 있습니다.)
|
||
</p>
|
||
|
||
<h5>8. 개인정보 파기</h5>
|
||
<p>회사는 원칙적으로 개인정보 수집 및 이용목적이 달성된 후에는 해당 정보를 지체없이 파기합니다.</p>
|
||
<p><strong>(1) 파기절차</strong></p>
|
||
<p>
|
||
회원이 입력한 정보는 목적 달성 후 별도 DB로 옮겨져 내부 방침 및 관련 법령에 의한 정보보호 사유에 따라 일정 기간 저장된 후 파기됩니다.
|
||
법률에 의한 경우가 아니고서는 다른 목적으로 이용되지 않습니다.
|
||
</p>
|
||
<p><strong>(2) 파기방법</strong></p>
|
||
<ul>
|
||
<li>전자적 파일형태로 저장된 개인정보는 기록을 재생할 수 없는 기술적 방법을 사용하여 삭제합니다.</li>
|
||
</ul>
|
||
|
||
<h5>9. 개인정보 보호책임자</h5>
|
||
<p>
|
||
① 회사는 귀하가 좋은 정보를 안전하게 이용할 수 있도록 최선을 다하고 있습니다.
|
||
개인정보를 보호하는데 있어 귀하께 고지한 사항들에 반하는 사고가 발생할 경우 개인정보보호책임자가 책임을 집니다.
|
||
</p>
|
||
<p>
|
||
② 이용자 비밀번호의 보안유지책임은 이용자 자신에게 있습니다.
|
||
회사는 비밀번호에 대해 어떠한 방법으로도 이용자에게 직접적으로 질문하는 경우는 없으므로 타인에게 비밀번호가 유출되지 않도록 주의하시기 바랍니다.
|
||
</p>
|
||
<p>
|
||
③ 회사가 기술적인 보완조치를 했음에도 해킹 등 네트워크 위험성으로 인해 발생하는 예기치 못한 사고로 인한 정보의 훼손 및 분쟁에 관해서는 책임이 없습니다.
|
||
</p>
|
||
<p>④ 개인정보 보호책임자 및 담당자 연락처는 아래와 같습니다.</p>
|
||
<ul>
|
||
<li><strong>소속</strong> : 대표이사</li>
|
||
<li><strong>전화번호</strong> : 1833-4856</li>
|
||
<li><strong>성명</strong> : 송병수</li>
|
||
<li><strong>이메일</strong> : Bestplusmakerr@gmail.com</li>
|
||
</ul>
|
||
|
||
<h5>10. 정보주체의 권익침해에 대한 구제방법</h5>
|
||
<p>아래의 기관은 당사와 별개의 기관입니다. 도움이 필요하시면 문의하여 주시기 바랍니다.</p>
|
||
<ul>
|
||
<li><strong>개인정보 침해신고센터(한국인터넷진흥원)</strong> : privacy.kisa.or.kr / 118 / 서울시 송파구 중대로 135</li>
|
||
<li><strong>개인정보 분쟁조정위원회</strong> : www.kopico.go.kr / 1833-6972 / 정부서울청사 4층</li>
|
||
<li><strong>대검찰청 사이버수사과</strong> : 1301 / www.spo.go.kr</li>
|
||
<li><strong>경찰청 사이버안전국</strong> : 182 / http://cyberbureau.police.go.kr</li>
|
||
</ul>
|
||
|
||
<h5>11. 개인정보 처리방침 고지의 의무</h5>
|
||
<p>
|
||
이 개인정보처리방침은 시행일로부터 적용되며, 법령 및 방침에 따른 변경내용의 추가, 삭제 및 정정이 있는 경우에는
|
||
변경사항의 시행 7일 전부터 공지사항을 통하여 고지할 것입니다.
|
||
</p>
|
||
<p>본 방침은 2019년 1월 21일부터 시행됩니다.</p>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<div class="terms-divider"></div>
|
||
|
||
{{-- [필수] 14세 --}}
|
||
<div class="terms-row">
|
||
<label class="chk">
|
||
<input type="checkbox" name="agree_age" id="agree_age" value="1" required>
|
||
<span class="chk-ui" aria-hidden="true"></span>
|
||
<span class="chk-text">
|
||
<span class="badge badge--req">필수</span>
|
||
<span class="terms-label">만 14세 이상입니다</span>
|
||
<span class="terms-sub">만 14세 미만은 회원가입이 제한됩니다.</span>
|
||
</span>
|
||
</label>
|
||
</div>
|
||
|
||
<div class="terms-divider"></div>
|
||
|
||
{{-- [선택] 마케팅 --}}
|
||
<div class="terms-row">
|
||
<label class="chk">
|
||
<input type="checkbox" name="agree_marketing" id="agree_marketing" value="1">
|
||
<span class="chk-ui" aria-hidden="true"></span>
|
||
<span class="chk-text">
|
||
<span class="badge badge--opt">선택</span>
|
||
<span class="terms-label">마케팅 정보 수신 동의</span>
|
||
<span class="terms-sub">할인/이벤트 등 혜택 안내를 받을 수 있어요.</span>
|
||
</span>
|
||
</label>
|
||
|
||
<button type="button" class="terms-view" data-toggle="t_marketing">내용보기</button>
|
||
</div>
|
||
<div class="terms-body" id="t_marketing" hidden>
|
||
<div class="terms-scroll">
|
||
<h4>마케팅 정보 수신 동의 (선택)</h4>
|
||
|
||
<div class="terms-legal">
|
||
<p>
|
||
회사는 이벤트/혜택 안내 등 마케팅 정보 제공을 위해 아래와 같이 개인정보를 이용하고,
|
||
문자(SMS) 등으로 안내를 발송할 수 있습니다. 본 동의는 선택 사항이며, 동의하지 않아도 서비스 이용이 가능합니다.
|
||
</p>
|
||
|
||
<h5>1. 수신 내용</h5>
|
||
<ul>
|
||
<li>이벤트/프로모션, 할인 혜택, 쿠폰, 신규 서비스 / 상품안내, 맞춤형 혜택 안내(이용 이력 기반 추천 포함 가능)</li>
|
||
</ul>
|
||
|
||
<h5>2. 수신 채널</h5>
|
||
<ul>
|
||
<li>SMS(문자)</li>
|
||
<li>이메일</li>
|
||
</ul>
|
||
|
||
<h5>3. 이용 항목</h5>
|
||
<ul>
|
||
<li>휴대폰번호, 이메일, 서비스 이용 정보(혜택 제공 목적 내 최소한)</li>
|
||
</ul>
|
||
|
||
<h5>4. 보유 및 이용기간</h5>
|
||
<p>
|
||
동의일로부터 <strong>회원 탈퇴 또는 동의 철회 시까지</strong> 보유·이용합니다.
|
||
단, 관계 법령에 따라 보존할 필요가 있는 경우 해당 기간 동안 보관될 수 있습니다.
|
||
</p>
|
||
|
||
<h5>5. 동의 철회(수신 거부)</h5>
|
||
<p>
|
||
마케팅 정보 수신은 언제든지 철회할 수 있습니다.
|
||
(예: 마이페이지 > 설정/수신동의 변경, 고객센터 요청 등)
|
||
철회 후에도 서비스 관련 필수 안내(가입/인증/결제/보안/공지 등)는 발송될 수 있습니다.
|
||
</p>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
|
||
<div class="terms-help" id="terms_help" hidden>
|
||
필수 약관에 동의해 주세요.
|
||
</div>
|
||
|
||
<div class="terms-actions">
|
||
<button type="submit" class="terms-btn terms-btn--primary" id="terms_next_btn" disabled>
|
||
동의하고 다음
|
||
</button>
|
||
<a class="terms-btn" href="{{ route('web.auth.register') }}">이전</a>
|
||
</div>
|
||
|
||
<p class="terms-note">
|
||
다음 단계에서 PASS 본인인증을 진행합니다.
|
||
</p>
|
||
</form>
|
||
</div>
|
||
|
||
{{-- 페이지 전용 스타일(이쁘게) --}}
|
||
<style>
|
||
.terms-wrap{display:flex;flex-direction:column;gap:14px}
|
||
.terms-steps{
|
||
display:flex;
|
||
gap:10px;
|
||
align-items:center;
|
||
justify-content:space-between;
|
||
}
|
||
|
||
.terms-step{
|
||
flex:1;
|
||
text-align:center;
|
||
padding:10px 12px;
|
||
border-radius:999px; /* badge */
|
||
font-size:12.5px;
|
||
font-weight:800;
|
||
letter-spacing:-0.2px;
|
||
margin-top: 10px;
|
||
margin-bottom: 50px;
|
||
|
||
/* 기본(비활성) */
|
||
color: rgba(136, 105, 105, 0.78);
|
||
border:1px solid rgba(255,255,255,.14);
|
||
background:rgba(255,255,255,.06);
|
||
box-shadow:
|
||
inset 0 1px 0 rgba(255,255,255,.10),
|
||
0 10px 22px rgba(0,0,0,.14);
|
||
|
||
opacity:.78;
|
||
position:relative;
|
||
overflow:hidden;
|
||
}
|
||
|
||
/* 비활성도 살짝 그라데이션 느낌(은은하게) */
|
||
.terms-step::before{
|
||
content:"";
|
||
position:absolute;
|
||
inset:0;
|
||
background:linear-gradient(135deg,
|
||
rgba(47,107,255,.18),
|
||
rgba(74,163,255,.14),
|
||
rgba(47,210,255,.12)
|
||
);
|
||
opacity:.55;
|
||
pointer-events:none;
|
||
}
|
||
|
||
/* 활성: 선명한 그라데이션 */
|
||
.terms-step.is-active{
|
||
opacity:1;
|
||
color:#fff;
|
||
border-color:rgba(120,180,255,.50);
|
||
background:linear-gradient(135deg, #2f6bff 0%, #4aa3ff 55%, #2fd2ff 100%);
|
||
box-shadow:
|
||
0 18px 38px rgba(47,107,255,.28),
|
||
0 10px 20px rgba(47,210,255,.14);
|
||
}
|
||
|
||
/* shine 효과 (활성만) */
|
||
.terms-step.is-active::after{
|
||
content:"";
|
||
position:absolute;
|
||
top:-40%;
|
||
left:-45%;
|
||
width:55%;
|
||
height:180%;
|
||
transform:rotate(18deg);
|
||
background:linear-gradient(90deg, transparent, rgba(255,255,255,.35), transparent);
|
||
opacity:.55;
|
||
animation: termsStepShine 2.8s ease-in-out infinite;
|
||
pointer-events:none;
|
||
}
|
||
|
||
@keyframes termsStepShine{
|
||
0% { transform: translateX(-30%) rotate(18deg); opacity:.20; }
|
||
45% { opacity:.70; }
|
||
100% { transform: translateX(240%) rotate(18deg); opacity:.20; }
|
||
}
|
||
|
||
/* 모바일에서 글자 길어서 깨질 때 대비 */
|
||
@media (max-width: 420px){
|
||
.terms-step{
|
||
font-size:12px;
|
||
padding:10px 10px;
|
||
}
|
||
}
|
||
|
||
.terms-form{display:flex;flex-direction:column;gap:12px}
|
||
|
||
.terms-card{border:1px solid rgba(255,255,255,.12);border-radius:16px;
|
||
background:rgba(255,255,255,.04);box-shadow:0 12px 30px rgba(0,0,0,.18);
|
||
overflow:hidden}
|
||
.terms-card--all{padding:14px 14px}
|
||
|
||
.terms-row{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;
|
||
padding:14px 14px}
|
||
.terms-divider{height:1px;background:rgba(255,255,255,.10);margin:0 14px}
|
||
|
||
.terms-legal h5 { margin:14px 0 6px; font-size:12.5px; opacity:.95; }
|
||
.terms-legal p { margin:0 0 8px; }
|
||
.terms-legal ul, .terms-legal ol { margin:6px 0 10px; padding-left:18px; }
|
||
.terms-legal li { margin:2px 0; opacity:.85; line-height:1.65; }
|
||
|
||
/* custom checkbox */
|
||
.chk{display:flex;gap:10px;align-items:flex-start;cursor:pointer;user-select:none}
|
||
.chk input{position:absolute;opacity:0;pointer-events:none}
|
||
.chk-ui{width:20px;height:20px;border-radius:6px;flex:0 0 20px;margin-top:2px;
|
||
border:1px solid rgba(255,255,255,.22);
|
||
background:rgba(0,0,0,.15);
|
||
box-shadow:inset 0 0 0 1px rgba(0,0,0,.2)}
|
||
.chk input:checked + .chk-ui{
|
||
border-color:rgba(255,255,255,.35);
|
||
background:rgba(255,255,255,.92);
|
||
}
|
||
.chk input:checked + .chk-ui::after{
|
||
content:"";display:block;width:10px;height:6px;border-left:2px solid #111;border-bottom:2px solid #111;
|
||
transform:rotate(-45deg);margin:5px 0 0 4px
|
||
}
|
||
|
||
.chk-text{display:flex;flex-direction:column;gap:4px;line-height:1.3}
|
||
.chk-title{font-weight:800}
|
||
.chk-sub{opacity:.72;font-size:12px}
|
||
.terms-label{font-weight:800}
|
||
.terms-sub{opacity:.72;font-size:12px}
|
||
|
||
.badge{display:inline-flex;align-items:center;justify-content:center;
|
||
padding:2px 8px;border-radius:999px;font-size:11px;font-weight:800;width:max-content}
|
||
.badge--req{background:rgba(255,90,90,.18);border:1px solid rgba(255,90,90,.35)}
|
||
.badge--opt{background:rgba(120,180,255,.16);border:1px solid rgba(120,180,255,.30);opacity:.9}
|
||
|
||
/* "내용보기" 버튼 */
|
||
.terms-view{border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.06);
|
||
color:inherit;border-radius:10px;padding:8px 10px;font-size:12px;cursor:pointer;opacity:.92;
|
||
transition:transform .08s ease, opacity .08s ease, background .08s ease}
|
||
.terms-view:hover{opacity:1;background:rgba(255,255,255,.10)}
|
||
.terms-view:active{transform:scale(.98)}
|
||
|
||
/* 내용 영역: div + 스크롤 */
|
||
.terms-body{padding:0 14px 14px}
|
||
.terms-scroll{border:1px solid rgba(255,255,255,.10);background:rgba(0,0,0,.16);
|
||
border-radius:12px;padding:12px;max-height:180px;overflow:auto}
|
||
.terms-scroll h4{margin:0 0 10px;font-size:13px}
|
||
.terms-scroll p,.terms-scroll li{opacity:.85;line-height:1.65;font-size:12.5px}
|
||
.terms-scroll ul{margin:8px 0 0;padding-left:18px}
|
||
|
||
/* 안내/버튼 */
|
||
.terms-help{padding:10px 12px;border-radius:12px;background:rgba(255,90,90,.12);
|
||
border:1px solid rgba(255,90,90,.25);opacity:.95;font-size:12.5px}
|
||
.terms-actions{display:flex;gap:10px;margin-top:4px}
|
||
.terms-btn{flex:1;text-align:center;border-radius:14px;padding:12px 12px;
|
||
border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.06);color:inherit;
|
||
text-decoration:none;cursor:pointer;font-weight:800}
|
||
.terms-btn--primary{background:rgba(255,255,255,.92);color:#111;border-color:rgba(255,255,255,.55)}
|
||
.terms-btn[disabled]{opacity:.45;cursor:not-allowed}
|
||
.terms-note{margin:0;opacity:.7;font-size:12.5px;line-height:1.5}
|
||
|
||
/* Primary 버튼: 기본(비활성) = 밋밋 / 활성 = 블루톤 튀게 */
|
||
#terms_next_btn.terms-btn--primary{
|
||
position: relative;
|
||
overflow: hidden;
|
||
transform: translateZ(0);
|
||
transition: transform .12s ease, box-shadow .12s ease, filter .12s ease, opacity .12s ease;
|
||
}
|
||
|
||
/* 비활성(disabled)이어도 "버튼처럼" 보이게 */
|
||
#terms_next_btn.terms-btn--primary:disabled{
|
||
opacity: 1 !important;
|
||
cursor: not-allowed;
|
||
|
||
background: rgba(255,255,255,.88) !important; /* 밝은 버튼 */
|
||
border-color: rgba(0,0,0,.10) !important;
|
||
|
||
color: #7a7a7a !important; /* 검은 글자 */
|
||
text-shadow: 0 1px 0 rgba(255,255,255,.25); /* 살짝 또렷 */
|
||
box-shadow: 0 10px 22px rgba(0,0,0,.10) !important;
|
||
}
|
||
|
||
/* disabled일 때 shine 제거 */
|
||
#terms_next_btn.terms-btn--primary:disabled::before{
|
||
content: none !important;
|
||
}
|
||
/* 활성 상태 */
|
||
#terms_next_btn.terms-btn--primary:not(:disabled){
|
||
background: linear-gradient(135deg, #2f6bff 0%, #4aa3ff 55%, #2fd2ff 100%);
|
||
color: #fff;
|
||
border-color: rgba(120,180,255,.55);
|
||
box-shadow:
|
||
0 14px 30px rgba(47,107,255,.28),
|
||
0 6px 14px rgba(74,163,255,.18);
|
||
}
|
||
|
||
/* shine 효과 */
|
||
#terms_next_btn.terms-btn--primary:not(:disabled)::before{
|
||
content:"";
|
||
position:absolute;
|
||
top:-30%;
|
||
left:-40%;
|
||
width:60%;
|
||
height:160%;
|
||
background: linear-gradient(90deg, transparent, rgba(255,255,255,.35), transparent);
|
||
transform: rotate(18deg);
|
||
opacity:.55;
|
||
animation: termsShine 2.6s ease-in-out infinite;
|
||
pointer-events:none;
|
||
}
|
||
@keyframes termsShine{
|
||
0% { transform: translateX(-30%) rotate(18deg); opacity:.25; }
|
||
45% { opacity:.65; }
|
||
100% { transform: translateX(220%) rotate(18deg); opacity:.25; }
|
||
}
|
||
|
||
/* hover/active */
|
||
#terms_next_btn.terms-btn--primary:not(:disabled):hover{
|
||
transform: translateY(-1px);
|
||
box-shadow:
|
||
0 18px 40px rgba(47,107,255,.34),
|
||
0 8px 18px rgba(74,163,255,.22);
|
||
filter: saturate(1.08);
|
||
}
|
||
#terms_next_btn.terms-btn--primary:not(:disabled):active{
|
||
transform: translateY(0);
|
||
filter: saturate(1.0);
|
||
}
|
||
|
||
</style>
|
||
|
||
{{-- 페이지 전용 JS --}}
|
||
<script>
|
||
(function () {
|
||
const form = document.getElementById('regTermsForm');
|
||
const btn = document.getElementById('terms_next_btn');
|
||
const help = document.getElementById('terms_help');
|
||
|
||
const all = document.getElementById('agree_all');
|
||
const reqIds = ['agree_terms', 'agree_privacy', 'agree_age'];
|
||
const optIds = ['agree_marketing'];
|
||
|
||
const reqEls = reqIds.map(id => document.getElementById(id));
|
||
const optEls = optIds.map(id => document.getElementById(id));
|
||
const allEls = [...reqEls, ...optEls];
|
||
|
||
function requiredOk() {
|
||
return reqEls.every(el => el && el.checked);
|
||
}
|
||
|
||
function syncAllState() {
|
||
const checked = allEls.filter(el => el && el.checked).length;
|
||
all.checked = (checked === allEls.length);
|
||
all.indeterminate = (checked > 0 && checked < allEls.length);
|
||
}
|
||
|
||
function syncButton() {
|
||
const ok = requiredOk();
|
||
btn.disabled = !ok;
|
||
if (help) help.hidden = ok;
|
||
}
|
||
|
||
// 공통 메시지(모달 우선)
|
||
async function showAlert(msg, title='안내') {
|
||
if (window.showMsg) return await window.showMsg(msg, { type:'alert', title });
|
||
alert(msg);
|
||
return true;
|
||
}
|
||
|
||
// iframe 모달 오픈/닫기 (외부 클릭으로 닫히지 않게)
|
||
function openIframeModal(popupName = 'danal_authtel_popup', w = 420, h = 750) {
|
||
// 이미 떠 있으면 제거 후 다시
|
||
const old = document.getElementById(popupName);
|
||
if (old) old.remove();
|
||
|
||
const wrap = document.createElement('div');
|
||
wrap.id = popupName;
|
||
|
||
// step0(전화번호 입력 페이지) 이동 URL
|
||
const backUrl = @json(route('web.auth.register'));
|
||
|
||
wrap.innerHTML = `
|
||
<div class="danal-modal-dim" style="position:fixed;top:0;left:0;width:100%;height:100%;z-index:200000;background:#000;opacity:.55"></div>
|
||
|
||
<div class="danal-modal-box" style="position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:${w}px;height:${h}px;background:#fff;border-radius:10px;z-index:200001;overflow:hidden;">
|
||
|
||
<!-- 헤더 + 닫기버튼 -->
|
||
<div style="height:44px;display:flex;align-items:center;justify-content:space-between;padding:0 10px;background:rgba(0,0,0,.06);border-bottom:1px solid rgba(0,0,0,.08);">
|
||
<div style="font-weight:800;font-size:13px;color:#111;">PASS 본인인증</div>
|
||
<button type="button" id="${popupName}_close"
|
||
aria-label="인증창 닫기"
|
||
style="width:34px;height:34px;border-radius:10px;border:1px solid rgba(0,0,0,.12);background:#fff;cursor:pointer;font-size:18px;line-height:1;color:#111;">
|
||
×
|
||
</button>
|
||
</div>
|
||
|
||
<iframe id="${popupName}_iframe" name="${popupName}_iframe"
|
||
style="width:100%;height:calc(100% - 44px);border:none"></iframe>
|
||
</div>
|
||
`;
|
||
|
||
document.body.appendChild(wrap);
|
||
|
||
// 실제 닫기(제거)만 하는 함수
|
||
function removeModal() {
|
||
const el = document.getElementById(popupName);
|
||
if (el) el.remove();
|
||
}
|
||
|
||
async function askCancelAndGo() {
|
||
const msg = "인증을 중단합니다.\n처음부터 다시 진행 하시겠습니까?";
|
||
|
||
const ok = await showMsg(msg, {
|
||
type: "confirm",
|
||
title: "인증취소",
|
||
okText: "처음부터",
|
||
cancelText: "계속 진행",
|
||
closeOnBackdrop: false,
|
||
closeOnX: false,
|
||
closeOnEsc: false,
|
||
});
|
||
|
||
if (!ok) return;
|
||
|
||
// iframe 강제 종료(선택)
|
||
const ifr = document.getElementById(popupName + "_iframe");
|
||
if (ifr) ifr.src = "about:blank";
|
||
|
||
// 모달 제거
|
||
const el = document.getElementById(popupName);
|
||
if (el) el.remove();
|
||
|
||
// Step0로 이동
|
||
window.location.href = @json(route('web.auth.register'));
|
||
}
|
||
|
||
|
||
// 닫기 버튼 핸들러
|
||
const closeBtn = wrap.querySelector('#' + popupName + '_close');
|
||
if (closeBtn) {
|
||
closeBtn.addEventListener('click', askCancelAndGo);
|
||
}
|
||
|
||
// 바깥 클릭으로 닫히지 않게 유지(기존 정책)
|
||
// wrap.querySelector('.danal-modal-dim').addEventListener('click', (e)=>e.preventDefault());
|
||
|
||
// ESC 키로도 “중단” 처리 (선택)
|
||
const escHandler = (e) => {
|
||
if (e.key === 'Escape') askCancelAndGo();
|
||
};
|
||
window.addEventListener('keydown', escHandler);
|
||
|
||
// 외부에서 호출 가능하게 유지
|
||
window.closeIframe = function () {
|
||
window.removeEventListener('keydown', escHandler);
|
||
removeModal();
|
||
};
|
||
|
||
return popupName + '_iframe';
|
||
}
|
||
|
||
function postToIframe(url, targetName, fieldsObj) {
|
||
const temp = document.createElement('form');
|
||
temp.method = 'POST';
|
||
temp.action = url;
|
||
temp.target = targetName;
|
||
|
||
// 라라벨 CSRF
|
||
const csrf = document.createElement('input');
|
||
csrf.type = 'hidden';
|
||
csrf.name = '_token';
|
||
csrf.value = "{{ csrf_token() }}";
|
||
temp.appendChild(csrf);
|
||
|
||
// fields(JSON 문자열로)
|
||
const fields = document.createElement('input');
|
||
fields.type = 'hidden';
|
||
fields.name = 'fields';
|
||
fields.value = JSON.stringify(fieldsObj || {});
|
||
temp.appendChild(fields);
|
||
|
||
document.body.appendChild(temp);
|
||
temp.submit();
|
||
temp.remove();
|
||
}
|
||
|
||
// 다날 결과 메시지 수신 (iframe -> parent)
|
||
window.addEventListener('message', async (ev) => {
|
||
const d = ev.data || {};
|
||
if (d.type !== 'danal_result') return;
|
||
|
||
// 모달 닫기
|
||
if (typeof window.closeIframe === 'function') window.closeIframe();
|
||
|
||
await showAlert(d.message || (d.ok ? '본인인증이 완료되었습니다.' : '본인인증에 실패했습니다.'), d.ok ? '인증 완료' : '인증 실패');
|
||
|
||
if (d.redirect) {
|
||
window.location.href = d.redirect;
|
||
}
|
||
});
|
||
|
||
// 전체 동의
|
||
all.addEventListener('change', function () {
|
||
allEls.forEach(el => { if (el) el.checked = all.checked; });
|
||
syncButton();
|
||
syncAllState();
|
||
});
|
||
|
||
// 개별 변경
|
||
allEls.forEach(el => {
|
||
if (!el) return;
|
||
el.addEventListener('change', function () {
|
||
syncButton();
|
||
syncAllState();
|
||
});
|
||
});
|
||
|
||
// 내용 보기 토글(스크롤 div)
|
||
document.querySelectorAll('[data-toggle]').forEach(btn2 => {
|
||
btn2.addEventListener('click', function () {
|
||
const id = btn2.getAttribute('data-toggle');
|
||
const panel = document.getElementById(id);
|
||
if (!panel) return;
|
||
|
||
const willOpen = panel.hidden === true;
|
||
panel.hidden = !willOpen;
|
||
btn2.textContent = willOpen ? '닫기' : '내용보기';
|
||
});
|
||
});
|
||
|
||
// 초기
|
||
syncButton();
|
||
syncAllState();
|
||
|
||
// 제출: (기존 기능 유지) 약관 저장 + 다날 시작으로 변경
|
||
form.addEventListener('submit', async function (e) {
|
||
e.preventDefault();
|
||
|
||
if (!requiredOk()) {
|
||
await showAlert('필수 약관에 동의해 주세요.', '안내');
|
||
syncButton();
|
||
return;
|
||
}
|
||
|
||
btn.disabled = true;
|
||
|
||
try {
|
||
// AJAX로 약관 저장 + 다날 준비값 받기
|
||
const body = {
|
||
agree_terms: document.getElementById('agree_terms')?.checked ? '1' : '',
|
||
agree_privacy: document.getElementById('agree_privacy')?.checked ? '1' : '',
|
||
agree_age: document.getElementById('agree_age')?.checked ? '1' : '',
|
||
agree_marketing: document.getElementById('agree_marketing')?.checked ? '1' : '',
|
||
};
|
||
|
||
const res = await fetch(form.action, {
|
||
method: 'POST',
|
||
credentials: 'same-origin',
|
||
headers: {
|
||
'Content-Type': 'application/json',
|
||
'X-CSRF-TOKEN': "{{ csrf_token() }}",
|
||
'Accept': 'application/json',
|
||
},
|
||
body: JSON.stringify(body),
|
||
});
|
||
|
||
const data = await res.json().catch(() => ({}));
|
||
|
||
if (!res.ok || data.ok === false) {
|
||
await showAlert(data.message || '처리 중 오류가 발생했습니다. 잠시 후 다시 시도해 주세요ff.', '오류');
|
||
return;
|
||
}
|
||
|
||
// 서버가 danal_ready를 내려주면 iframe 모달 실행
|
||
if (data.reason === 'danal_ready' && data.popup && data.popup.url) {
|
||
const targetName = openIframeModal('danal_authtel_popup', 420, 750);
|
||
postToIframe(data.popup.url, targetName, data.popup.fields || {});
|
||
return;
|
||
}
|
||
|
||
// (혹시) 준비중/리다이렉트 방식일 때 fallback
|
||
if (data.redirect) {
|
||
window.location.href = data.redirect;
|
||
return;
|
||
}
|
||
|
||
await showAlert('약관 동의가 저장되었습니다.', '완료');
|
||
|
||
} catch (err) {
|
||
await showAlert('네트워크 오류가 발생했습니다. 잠시 후 다시 시도해 주세요.', '오류');
|
||
} finally {
|
||
btn.disabled = false;
|
||
}
|
||
});
|
||
|
||
})();
|
||
</script>
|
||
|
||
@endsection
|
||
|