Skip to content

Commit e319014

Browse files
committed
Merge branch 'dev' of https://github.com/MBTips/FE-MBTips into feat/login상태-my-info-페이지-연결-작업
2 parents ca74f25 + 8f1a391 commit e319014

File tree

5 files changed

+107
-38
lines changed

5 files changed

+107
-38
lines changed

src/components/TermsAndPrivacy.tsx

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,18 @@
11
const TermsAndPrivacy = ({
2-
setIsOpen
2+
openModal
33
}: {
4-
setIsOpen: React.Dispatch<
5-
React.SetStateAction<{ isOpen: boolean; terms: boolean; privacy: boolean }>
6-
>;
4+
openModal: (mode: "terms" | "privacy") => void;
75
}) => {
8-
const togglePopup = (mode: "terms" | "privacy") => {
9-
// 이용약관 및 개인정보처리방침 메시지 팝업
10-
setIsOpen((prev) => ({ ...prev, isOpen: true, [mode]: true }));
11-
};
12-
136
return (
14-
<div className="flex items-center w-screen text-gray-900 text-sm lex">
7+
<div className="flex items-center w-screen text-gray-900 text-sm">
158
<button
16-
onClick={() => togglePopup("terms")}
9+
onClick={() => openModal("terms")}
1710
className="flex justify-center border-r w-full hover:font-bold"
1811
>
1912
이용약관
2013
</button>
2114
<button
22-
onClick={() => togglePopup("privacy")}
15+
onClick={() => openModal("privacy")}
2316
className="w-full hover:font-bold"
2417
>
2518
개인정보처리방침
@@ -28,4 +21,4 @@ const TermsAndPrivacy = ({
2821
);
2922
};
3023

31-
export default TermsAndPrivacy;
24+
export default TermsAndPrivacy;

src/components/modal/TermsAndPrivacyModal.tsx

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,41 @@
1+
import { PRIVACY } from "@/constants/PRIVACY";
2+
import { TERMS } from "@/constants/TERMS";
3+
import { MouseEvent } from "react";
4+
15
const TermsAndPrivacyModal = ({
26
mode,
37
closeModal
48
}: {
59
mode: "terms" | "privacy";
6-
closeModal: React.Dispatch<
7-
React.SetStateAction<{ isOpen: boolean; terms: boolean; privacy: boolean }>
8-
>;
10+
closeModal: ()=>void;
911
}) => {
1012
const title = mode === "terms" ? "이용약관" : "개인정보처리방침";
1113
const description =
1214
mode === "terms"
13-
? "나 이용약관 블라블라블라...."
14-
: " 나 개인정보처리방침 블라블라블라";
15+
? TERMS
16+
: PRIVACY;
17+
18+
const handleOuterClick = () => {
19+
closeModal()
20+
}
21+
22+
const handleInnerClick = (e:MouseEvent) => {
23+
e.stopPropagation();
24+
}
1525

1626
return (
17-
<div className="z-1 fixed inset-0 flex flex-col items-center bg-white px-[45px] py-[25px] w-screen h-screen">
18-
<h1 className="font-bold text-2xl">{title}</h1>
19-
<p className="mt-[30px]">{description}</p>
27+
<div className="inset-0 fixed flex items-center justify-center z-50 bg-black/50" onClick={handleOuterClick}>
28+
<div className="relative rounded-lg flex flex-col items-center w-[360px] h-[476px] bg-white px-[45px] py-[25px] overflow-scroll " onClick={handleInnerClick}>
29+
<h1 className="font-bold text-2xl ">{title}</h1>
30+
<p className="mt-[30px] whitespace-pre-wrap">{description}</p>
2031
<button
21-
onClick={() =>
22-
closeModal({ isOpen: false, terms: false, privacy: false })
23-
}
24-
className="top-4 right-4 fixed"
32+
onClick={closeModal}
33+
className="absolute top-6 right-4"
2534
>
26-
<img src="/icon/close.svg" alt="닫기 버튼" width={28} height={28} />
35+
<img src="/icon/close.svg" alt="닫기 버튼" width={22} height={22} />
2736
</button>
2837
</div>
38+
</div>
2939
);
3040
};
3141

src/constants/PRIVACY.ts

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
export const PRIVACY = `제 1조 (목적)
2+
엠비팁스(이하 '서비스')는 MBTI 설정을 기반으로 한 AI 대화 시뮬레이션 서비스를 제공하기 위해 회원의 개인정보를 수집하고 처리합니다. 또한, 서비스 개선 및 사용자 경험 향상을 위해 비식별 데이터 분석을 수행할 수 있습니다.
3+
제 2조 (수집하는 개인정보 및 이용정보)
4+
서비스는 다음과 같은 개인정보 및 이용정보를 수집합니다.
5+
1. 카카오톡 간편로그인을 통해 수집하는 개인정보
6+
• 성별
7+
• 나이대
8+
• 이메일
9+
2. 서비스 이용 과정에서 자동으로 수집되는 정보(Google Analytics 활용)
10+
• 방문 기록(페이지 조회, 체류 시간 등)
11+
• 기기 및 브라우저 정보
12+
• 접속 IP 및 지역 정보(익명 처리됨)
13+
• 기타 서비스 이용 관련 로그 데이터
14+
제 3조 (개인정보 및 이용정보의 이용목적)
15+
수집한 개인정보 및 이용정보는 다음의 목적을 위해 사용됩니다.
16+
• 회원 구분 및 관리
17+
• 서비스 이용 관련 이슈 발생 시 연락
18+
• 서비스 품질 개선 및 사용자 경험 향상을 위한 데이터 분석(Google Analytics 활용)
19+
Google Analytics를 통해 수집된 데이터는 익명화 처리되며, 개인을 직접 식별할 수 없는 형태로 분석됩니다.
20+
제 4조 (개인정보 및 이용정보의 보유 및 이용기간)
21+
• 회원의 개인정보는 회원 탈퇴 시까지 보유하며, 탈퇴 후에는 관련 법률에 따라 일정 기간 보관 후 파기합니다.
22+
Google Analytics를 통해 수집된 비식별 데이터는 분석 목적으로 일정 기간 보관될 수 있습니다.
23+
제 5조 (개인정보 및 이용정보의 제3자 제공)
24+
서비스는 회원의 개인정보를 제3자에게 제공하지 않습니다. 단, 법률에 의해 요구되는 경우는 예외로 합니다.
25+
또한, Google Analytics를 활용한 데이터 분석 과정에서 일부 정보가 Google에 전송될 수 있으나, 이는 Google의 개인정보 보호 정책에 따라 관리됩니다.
26+
제 6조 (개인정보 및 이용정보 보호를 위한 기술적/관리적 조치)
27+
서비스는 회원의 개인정보 및 이용정보를 안전하게 보호하기 위해 다음과 같은 조치를 취합니다.
28+
• 데이터 암호화 및 보안 조치
29+
• 접근 권한 제한 및 관리적 보호 조치
30+
Google Analytics의 IP 익명화 기능 사용
31+
제 7조 (개인정보 및 이용정보의 열람, 정정 및 데이터 수집 거부 방법)
32+
회원은 언제든지 본인의 개인정보를 열람하거나 정정할 수 있으며, 이를 위해 본 서비스에 문의할 수 있습니다.
33+
• 문의처: [email protected]
34+
또한, 사용자는 Google Analytics에서 제공하는 옵트아웃 도구를 설치하거나, 브라우저 설정을 통해 쿠키를 차단함으로써 데이터 수집을 거부할 수 있습니다.
35+
제 8조 (개인정보 처리방침의 변경)
36+
본 개인정보처리방침은 법률 및 서비스 정책에 따라 변경될 수 있으며, 변경 시 서비스 내 공지사항을 통해 안내합니다.`;

src/constants/TERMS.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
export const TERMS = `제 1조 (목적)
2+
본 약관은 엠비팁스(이하 '서비스')의 이용에 관한 기본적인 사항을 규정합니다.
3+
제 2조 (회원가입)
4+
서비스 이용을 원하시는 분은 카카오톡 간편로그인을 통해 회원가입을 할 수 있습니다.
5+
회원가입 시 필요한 정보는 카카오톡을 통해 자동으로 수집됩니다.
6+
제 3조 (서비스의 제공)
7+
서비스는 MBTI 설정을 기반으로 한 AI 대화 시뮬레이션을 제공합니다.
8+
또한, 서비스 품질 개선 및 사용자 경험 향상을 위해 Google Analytics(GA)와 같은 데이터 분석 도구를 활용할 수 있습니다.
9+
제 4조 (이용자의 의무)
10+
회원은 서비스 이용 시 다음의 의무를 준수해야 합니다.
11+
• 제공된 정보를 정확하게 입력해야 합니다.
12+
• 타인의 개인정보를 침해하거나, 불법적인 행위를 해서는 안 됩니다.
13+
제 5조 (데이터 수집 및 활용)
14+
1. 서비스 품질 개선을 위한 데이터 수집
15+
• 서비스는 이용자의 서비스 사용 패턴을 분석하고, 품질 개선을 위해 Google Analytics(GA)를 활용할 수 있습니다.
16+
• GA를 통해 방문 기록, 기기 정보, 접속 지역 등의 비식별 데이터를 수집하며, 이는 개인을 식별할 수 없는 형태로 익명화되어 처리됩니다.
17+
2. 데이터 수집 거부 방법
18+
• 사용자는 Google에서 제공하는 Google Analytics 옵트아웃 도구를 설치하거나, 브라우저 설정을 통해 쿠키를 차단함으로써 데이터 수집을 거부할 수 있습니다.
19+
제 6조 (서비스의 변경 및 중단)
20+
서비스는 운영상 필요에 따라 서비스 내용을 변경하거나 중단할 수 있습니다.
21+
제 7조 (면책사항)
22+
서비스는 회원의 귀책사유로 발생한 손해에 대해서는 책임을 지지 않습니다.
23+
제 8조 (약관의 변경)
24+
서비스는 본 약관을 변경할 수 있으며, 변경 시 공지사항을 통해 안내합니다.
25+
`;

src/pages/Login.tsx

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,23 @@
1-
import { useEffect, useState } from "react";
1+
import { useState } from "react";
22
import KakaoLoginButton from "@/components/button/KakaoLoginButton";
33
import TermsAndPrivacy from "@/components/TermsAndPrivacy";
44
import TermsAndPrivacyModal from "@/components/modal/TermsAndPrivacyModal";
55

66
const Login = () => {
7-
const [isModalOpen, setIsModalOpen] = useState({
7+
const [isModalOpen, setIsModalOpen] = useState<{isOpen : boolean, mode : "terms" | "privacy"}>({
88
isOpen: false,
9-
terms: false,
10-
privacy: false
9+
mode: "terms",
1110
});
1211

13-
useEffect(() => {
14-
console.log(isModalOpen.isOpen);
15-
}, []);
12+
const openModal =(mode : "terms" | "privacy")=> {
13+
setIsModalOpen({mode:mode, isOpen : true});
14+
}
15+
const closeModal = () => {
16+
setIsModalOpen((state) => ({mode:state.mode, isOpen : false}));
17+
}
18+
19+
const isOpen = isModalOpen.isOpen
20+
const isTerms = isModalOpen.mode === "terms";
1621

1722
return (
1823
<div className="flex flex-col items-center">
@@ -35,13 +40,13 @@ const Login = () => {
3540
<KakaoLoginButton />
3641
</div>
3742
<div className="mt-[72px]">
38-
<TermsAndPrivacy setIsOpen={setIsModalOpen} />
43+
<TermsAndPrivacy openModal={openModal} />
3944
</div>
40-
{isModalOpen.isOpen ? (
41-
isModalOpen.terms ? (
42-
<TermsAndPrivacyModal mode="terms" closeModal={setIsModalOpen} />
45+
{isOpen ? (
46+
isTerms ? (
47+
<TermsAndPrivacyModal mode="terms" closeModal={closeModal} />
4348
) : (
44-
<TermsAndPrivacyModal mode="privacy" closeModal={setIsModalOpen} />
49+
<TermsAndPrivacyModal mode="privacy" closeModal={closeModal} />
4550
)
4651
) : null}
4752
</div>

0 commit comments

Comments
 (0)