From 79afbc3593299ee3c13b1297f3c30875cf6a10aa Mon Sep 17 00:00:00 2001 From: seoyeon-jung Date: Mon, 29 Jan 2024 15:22:05 +0900 Subject: [PATCH 1/4] =?UTF-8?q?refactor:=20=EC=9D=B4=EB=A9=94=EC=9D=BC=20?= =?UTF-8?q?=EC=A4=91=EB=B3=B5=20=EC=B2=B4=ED=81=AC=20=EB=A6=AC=ED=8C=A9?= =?UTF-8?q?=ED=86=A0=EB=A7=81=20#40?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - '중복확인' 버튼 클릭 시 세가지 경우의 수를 지정했습니다 - 유효성 검사 통과 / 중복 이메일 / 확인되었습니다 (세가지 경우) --- src/components/join/EmailCheck.jsx | 40 +++++++++++++++++++----------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/src/components/join/EmailCheck.jsx b/src/components/join/EmailCheck.jsx index a0d4924..92339a9 100644 --- a/src/components/join/EmailCheck.jsx +++ b/src/components/join/EmailCheck.jsx @@ -8,28 +8,38 @@ export default function EmailCheck({ email, setEmail }) { const emailRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/; // 이메일 조건 const [isValid, setIsValid] = useState(true); // 유효성 검사 + const [isDuplicate, setIsDuplicate] = useState(true); // 중복 검사 const handleCheckEmail = async () => { const isValidCheck = emailRegex.test(email); - setIsValid(isValidCheck); + setIsValid(isValidCheck); // 유효성 검사 통과 if (!emailRegex.test(email)) { openModal(); - } else { - try { - const response = await axios.get(`/joinform/api/signup/mailcheck`, { - params: { email: email }, - }); - - if (response.status === 200) { - alert("확인되었습니다."); - } else if (response.status === 400) { + return; + } + + try { + const response = await axios.get( + `${process.env.REACT_APP_API_BASE_URL}/joinform/api/signup/mailcheck`, + { + params: { mail: email }, + } + ); + + if (response.status === 200) { + if (response.data.code === 200) { + // 중복 이메일 없을 때 + setIsDuplicate(true); + openModal(); + } else if (response.data.code === 400) { + // 중복 이메일이 존재할 때 + setIsDuplicate(false); openModal(); } - } catch (error) { - console.error("Error checking email:", error); - openModal(); } + } catch (error) { + console.error("error: ", error); } }; @@ -64,7 +74,9 @@ export default function EmailCheck({ email, setEmail }) {
{isValid - ? "중복된 이메일이 존재합니다. 다른 이메일을 입력해주세요." + ? isDuplicate + ? "확인되었습니다" + : "중복된 이메일이 존재합니다" : "이메일 형식이 올바르지 않습니다."}
From e19be8f1ba002742201d483ec7818b5b8af5edab Mon Sep 17 00:00:00 2001 From: seoyeon-jung Date: Mon, 29 Jan 2024 15:30:32 +0900 Subject: [PATCH 2/4] =?UTF-8?q?chore:=20gitignore=EC=97=90=20env=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 4d29575..532eddc 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,5 @@ npm-debug.log* yarn-debug.log* yarn-error.log* + +.env \ No newline at end of file From 1d0d6eda50f6f8231a92470554852b9e50844532 Mon Sep 17 00:00:00 2001 From: seoyeon-jung Date: Mon, 29 Jan 2024 15:31:02 +0900 Subject: [PATCH 3/4] =?UTF-8?q?refactor:=20=EB=8B=89=EB=84=A4=EC=9E=84=20?= =?UTF-8?q?=EC=A4=91=EB=B3=B5=20=EC=B2=B4=ED=81=AC=20=EB=A6=AC=ED=8C=A9?= =?UTF-8?q?=ED=86=A0=EB=A7=81=20#40?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 이메일 중복 체크와 동일하게 리팩토링했습니다 --- src/components/join/NicknameCheck.jsx | 39 ++++++++++++++++----------- 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/src/components/join/NicknameCheck.jsx b/src/components/join/NicknameCheck.jsx index 44544cb..1b66b29 100644 --- a/src/components/join/NicknameCheck.jsx +++ b/src/components/join/NicknameCheck.jsx @@ -9,6 +9,7 @@ export default function NicknameCheck({ nickname, setNickname }) { // 아이디 중복 확인 const nicknameRegex = /^[a-zA-Z0-9]{1,5}$/; const [isValid, setIsValid] = useState(true); // 유효성 검사 + const [isDuplicate, setIsDuplicate] = useState(true); // 중복 검사 const handleNickname = async () => { const checkedNickname = nicknameRegex.test(nickname); // 유효성 검사한 닉네임 @@ -17,21 +18,27 @@ export default function NicknameCheck({ nickname, setNickname }) { if (!nicknameRegex.test(nickname)) { openModal(); - } else { - try { - const response = await axios.get(`/joinform/api/signup/nicknamecheck`, { - params: { nickname: nickname }, - }); + } - if (response.status === 200) { - alert("확인되었습니다."); - } else if (response.status === 400) { - openModal(); + try { + const response = await axios.get( + `${process.env.REACT_APP_API_BASE_URL}/joinform/api/signup/nicknamecheck`, + { + params: { nickname: nickname }, } - } catch (error) { - console.error("Error checking nickname:", error); + ); + + if (response.status === 200) { + // 중복 닉네임 없을 때 + setIsDuplicate(true); + openModal(); + } else if (response.status === 400) { + // 중복 닉네임 있을 때 + setIsDuplicate(false); openModal(); } + } catch (error) { + console.error("error: ", error); } }; @@ -39,11 +46,11 @@ export default function NicknameCheck({ nickname, setNickname }) { <>
setNickname(e.target.value)} /> @@ -58,13 +65,15 @@ export default function NicknameCheck({ nickname, setNickname }) { - {/* 아이디 중복 확인 modal */} + {/* 닉네임 중복 확인 modal */}
{isValid - ? "닉네임이 중복됩니다. 다른 닉네임을 입력해주세요." + ? isDuplicate + ? "확인되었습니다" + : "닉네임이 중복됩니다. 다른 닉네임을 입력해주세요." : "잘못된 형식의 닉네임입니다."}
From ce7f58838ede87db4b0b7cfbae491b64f3eb49cd Mon Sep 17 00:00:00 2001 From: seoyeon-jung Date: Mon, 29 Jan 2024 15:52:53 +0900 Subject: [PATCH 4/4] =?UTF-8?q?refactor:=20=ED=9A=8C=EC=9B=90=EA=B0=80?= =?UTF-8?q?=EC=9E=85=20=EC=BD=94=EB=93=9C=20=EB=A6=AC=ED=8C=A9=ED=86=A0?= =?UTF-8?q?=EB=A7=81=20#40?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/join/JoinForm.jsx | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/components/join/JoinForm.jsx b/src/components/join/JoinForm.jsx index ff41b9b..ba2d195 100644 --- a/src/components/join/JoinForm.jsx +++ b/src/components/join/JoinForm.jsx @@ -42,11 +42,14 @@ export default function JoinForm() { openModal(); } else { try { - const response = await axios.post(`/joinform/api/signup`, { - usermail: email, - password: password, - nickname: nickname, - }); + const response = await axios.post( + `${process.env.REACT_APP_API_BASE_URL}/joinform/api/signup`, + { + usermail: email, + password: password, + nickname: nickname, + } + ); if (response.status === 200 && response.data.code === 200) { navigate("/joinend");