![[Tistory] 코드 적용 - script](https://image.inblog.dev?url=https%3A%2F%2Finblog.ai%2Fapi%2Fog%3Ftitle%3D%255BTistory%255D%2520%25EC%25BD%2594%25EB%2593%259C%2520%25EC%25A0%2581%25EC%259A%25A9%2520-%2520script%2520%26logoUrl%3Dhttps%253A%252F%252Finblog.ai%252Finblog_logo.png%26blogTitle%3DCoding_study&w=2048&q=75)
1. 인증번호 입력할 모달창 생성
<!-- modal -->
<div id="authModal" class="modal modal1">
<div class="modal-content modal1">
<p style="font-size: 30px">💌 발송 완료 💌</p>
<input type="text" id="authCodeText" placeholder="인증번호를 입력해주세요"/>
<div class="modal-buttons">
<button id="cancelBtn">취소</button>
<button id="confirmBtn">확인</button>
</div>
</div>
</div>
2. joinForm.mustache
이메일 인증이 되면 상태값 true, 이메일 인증이 안되면 상태값 false를 줘서, ajax로 이 상태값을 서버로 날리는 방식 … 밖에 생각이 안 난다.
<div class="email-box d-flex">
<input class="my_auth_form_box_input" id="email" type="email" name="email" placeholder="이메일" maxlength="60"
value="compilemate@gmail.com"
required/>
<button class="btn btn-outline-info btn-sm" type="button" id="emailAuthButton">인증하기</button>
</div>
<!-- isEmailConfirmed hidden input을 추가 -->
<input type="hidden" id="isEmailConfirmed" name="isEmailConfirmed" value="false">
<button type="submit" id="joinBtn" class="my_secondary_btn">회원가입</button>
<!-- 이메일 주소로 메일 보내기 -->
function emailSendCode() {
//console.log($("#email").val());
let email = encodeURIComponent($("#email").val());
$.ajax({
url: '/send-mail?email=' + email, // AJAX URL과 서버 매핑 URL 일치 여부 확인
type: 'GET'
}).done((res) => {
console.log("Response:", res);
emailCode = res.body;
console.log("Received code:", emailCode);
showModal();
}).fail((res) => {
alert("오류");
});
}
<!-- 이메일 주소로 메일 보내기 끝 -->
//인증번호 확인 로직
let isEmailConfirmed = false;
$("#confirmBtn").click(function () {
let checkEmailCode = $("#authCodeText").val();
$.ajax({
url: '/check-email-code?emailCode=' + checkEmailCode,
type: 'GET'
}).done((res) => {
if (res.body) {
Swal.fire({
title: "인증이 완료되었습니다.",
icon: "success",
button: "확인"
});
$('#authModal').css('display', 'none');
isEmailConfirmed = true; // 인증이 완료되었으므로 true로 설정
$('#isEmailConfirmed').val('true'); // 서버로 값을 전송하기 위해 숨겨진 필드에 값 설정
} else {
Swal.fire({
title: "인증번호를 확인해주세요",
icon: "warning",
confirmButtonText: "확인"
});
}
}).fail((res) => {
alert("오류");
});
});
//인증번호 확인 로직 끝
이메일 인증이 완료되었는지를 확인하기 위해서 사용자가 인증번호를 입력하고 확인 버튼을 클릭하면, AJAX 요청을 통해 서버로부터 인증 결과를 받게 함
그래서 input type="hidden" id="isEmailConfirmed" 을 바인딩 함
- 인증 결과 확인: 사용자가 입력한 인증번호가 서버에서 확인되어 인증이 성공하면
isEmailConfirmed
값을true
로 업데이트한다.
- 서버로의 데이터 전송: 이 값을 숨겨진 입력 필드에 설정해두면, 회원가입 폼을 제출할 때 이 값이 함께 전송됩니다. 이렇게 하면 서버에서 이메일 인증이 완료된 사용자인지 확인할 수 있다.
Share article