Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 0 additions & 27 deletions ringus.pem

This file was deleted.

123 changes: 80 additions & 43 deletions src/auth/components/signup/UsagePolicy.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,50 +15,66 @@ const UsagePolicy = ({
marketing: false,
});

// 모든 필수 항목이 체크되었는지 확인
const isAllRequiredChecked = checkedItems.terms && checkedItems.privacy;
// 모달 열기용 상태
const [modalType, setModalType] = useState<'terms' | 'privacy' | null>(null);

// 모든 항목이 체크되었는지 확인
const isAllRequiredChecked = checkedItems.terms && checkedItems.privacy;
const allChecked =
checkedItems.terms && checkedItems.privacy && checkedItems.marketing;

// 개별 체크박스 변경 핸들러
const handleSingleCheck = (name: string) => {
setCheckedItems((prev: any) => {
const newState = { ...prev, [name]: !prev[name] };
return newState;
});
setCheckedItems((prev: any) => ({ ...prev, [name]: !prev[name] }));
};

// ✅ `useEffect`에서 상태 변경을 감지한 후 `onAgree` 호출
useEffect(() => {
onAgree('TERMS_OF_SERVICE', checkedItems.terms);
onAgree('PRIVACY_POLICY', checkedItems.privacy);
onAgree('MARKETING_CONSENT', checkedItems.marketing);
}, [checkedItems]); // checkedItems 변경 시 실행
}, [checkedItems]);

// "모두 동의" 체크박스 핸들러
const handleAllCheck = () => {
const newCheckedState = !allChecked;
const updatedState = {
terms: newCheckedState,
privacy: newCheckedState,
marketing: newCheckedState,
};

setCheckedItems(updatedState);

// `onAgree` 호출하여 백엔드에 전달될 데이터 업데이트
onAgree('TERMS_OF_SERVICE', newCheckedState);
onAgree('PRIVACY_POLICY', newCheckedState);
onAgree('MARKETING_CONSENT', newCheckedState);
const newState = !allChecked;
setCheckedItems({
terms: newState,
privacy: newState,
marketing: newState,
});
onAgree('TERMS_OF_SERVICE', newState);
onAgree('PRIVACY_POLICY', newState);
onAgree('MARKETING_CONSENT', newState);
console.log('모두 동의:', newState);
};

// 콘솔에서 확인 (현재 상태 출력)
console.log('"모두 동의" 선택됨:', [
{ tag: 'TERMS_OF_SERVICE', agreed: newCheckedState },
{ tag: 'PRIVACY_POLICY', agreed: newCheckedState },
{ tag: 'MARKETING_CONSENT', agreed: newCheckedState },
]);
// 상세보기 모달 열린 경우 렌더
const renderModal = () => {
if (!modalType) return null;
return (
<div className="fixed inset-0 bg-black bg-opacity-50 flex justify-center items-center">
<div className="bg-white p-6 rounded-lg w-3/4 max-w-xl">
<h4 className="text-lg font-bold mb-4">
{modalType === 'terms'
? '링어스 이용약관'
: '개인정보 수집 및 이용 동의'}
</h4>
<div className="h-64 overflow-auto mb-6">
{/* 실제 약관 텍스트를 여기 로드하세요 */}
<p>
여기에{' '}
{modalType === 'terms'
? '서비스 이용 약관...'
: '개인정보 처리 방침...'}{' '}
내용을 표시합니다.
</p>
</div>
<button
className="px-4 py-2 bg-primary-1 rounded-lg text-white rounded"
onClick={() => setModalType(null)}
>
닫기
</button>
</div>
</div>
);
};

return (
Expand All @@ -82,19 +98,38 @@ const UsagePolicy = ({
</div>
<hr />

{/* 개별 약관 동의 */}
<Checkbox
label="링어스 이용약관"
isChecked={checkedItems.terms}
type="required"
onChange={() => handleSingleCheck('terms')}
/>
<Checkbox
label="개인정보 수집 및 이용 동의"
isChecked={checkedItems.privacy}
type="required"
onChange={() => handleSingleCheck('privacy')}
/>
{/* 개별 약관 동의 + 상세보기 */}
<div className="flex items-center justify-between">
<Checkbox
label="링어스 이용약관"
isChecked={checkedItems.terms}
type="required"
onChange={() => handleSingleCheck('terms')}
/>
<button
onClick={() => setModalType('terms')}
className="text-sm hover:text-gray-1 text-gray-3 underline ml-2"
>
상세보기
</button>
</div>

<div className="flex items-center justify-between">
<Checkbox
label="개인정보 수집 및 이용 동의"
isChecked={checkedItems.privacy}
type="required"
onChange={() => handleSingleCheck('privacy')}
/>
<button
onClick={() => setModalType('privacy')}
className="text-sm hover:text-gray-1 text-gray-3 underline ml-2"
>
상세보기
</button>
</div>

{/* 선택 약관 */}
<Checkbox
label="마케팅 정보 수신"
isChecked={checkedItems.marketing}
Expand All @@ -113,6 +148,8 @@ const UsagePolicy = ({
다음으로
</GlobalButton>
</div>

{renderModal()}
</div>
);
};
Expand Down
59 changes: 59 additions & 0 deletions src/content/terms-of-service.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
[이용약관]

제 1 조 (목적)

본 약관은 RingUs(이하 "서비스")가 제공하는 멘토링 플랫폼의 이용과 관련하여, 회사와 이용자의 권리, 의무 및 책임 사항을 규정하는 것을 목적으로 합니다.



제 2 조 (정의)

"RingUs"란 대학생과 같은 대학 출신 현직자 선배를 연결하여 1:1 멘토링을 제공하는 온라인 플랫폼을 의미합니다.

"회원"이란 본 약관에 동의하고 서비스에 가입한 자를 의미합니다.

"멘토"란 자신의 경험과 지식을 바탕으로 멘토링을 제공하는 회원을 의미합니다.

"멘티"란 멘토링을 신청하여 멘토의 도움을 받는 회원을 의미합니다.



제 3 조 (회원가입 및 계정 관리)

회원은 본인의 정확한 정보를 제공하여야 하며, 잘못된 정보 제공으로 인한 불이익은 회원 본인의 책임입니다.

학교 인증 절차를 완료해야 가입할 수 있으며, 인증되지 않은 경우 서비스 이용이 제한될 수 있습니다.

계정의 관리 책임은 회원 본인에게 있으며, 계정 도용으로 발생한 문제에 대해 회사는 책임을 지지 않습니다.



제 4 조 (서비스 이용)

회원은 서비스 이용 시 관련 법령 및 본 약관을 준수해야 합니다.

회원은 허위 정보 제공, 타인의 계정 도용, 부적절한 언행 등을 금지합니다.

서비스 이용과 관련하여 분쟁이 발생할 경우, 회원은 회사의 해결 절차를 성실히 따라야 합니다.



제 5 조 (서비스 중단 및 변경)

회사는 서비스 운영상 필요한 경우 사전 공지를 통해 서비스의 일부 또는 전부를 변경하거나 중단할 수 있습니다.

불가항력적인 사유(서버 장애, 법적 규제 등)로 인해 서비스가 중단될 경우, 회사는 이에 대한 책임을 지지 않습니다.



제 6 조 (면책조항)

회사는 멘토링 과정에서 발생하는 문제에 대해 법적 책임을 지지 않습니다.

회사는 회원이 제공하는 정보의 신뢰성, 정확성에 대해 보증하지 않습니다.



제 7 조 (준거법 및 분쟁 해결)

본 약관과 관련된 분쟁은 대한민국 법률을 따르며, 회사와 회원 간 분쟁 발생 시 상호 협의하여 해결하도록 합니다.
16 changes: 14 additions & 2 deletions src/global/components/JobCategories.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,19 @@ export const fieldOptions: string[] = [
'법률',
];

export const registerfieldOptions: string[] = [
'마케팅',
'서비스 기획',
'디자인',
'개발',
'대학원',
'인사',
'영업',
'금융',
'데이터',
'의료',
'법률',
];

// 직군별 아이콘 매핑
export const fieldIcons: { [key: string]: string } = {
Expand All @@ -32,7 +45,7 @@ export const fieldIcons: { [key: string]: string } = {
};

// 직무 (세부 카테고리)
export const subFieldOptions: { [key: string]: string[] } = {
export const subFieldOptions: Record<string, string[]> = {
전체: [],
마케팅: [
'브랜드 마케팅',
Expand Down Expand Up @@ -138,4 +151,3 @@ export const subFieldOptions: { [key: string]: string[] } = {
'기타',
],
};

4 changes: 2 additions & 2 deletions src/home/pages/HomePage.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ export default function HomePage() {

{/* 카테고리 아이콘 리스트 */}
<div className="bg-[#765BFD]">
<div className="max-w-[600px] bg-white h-full rounded-t-[30px] relative z-15 border-[#765BFD]">
<div className="max-w-[600px] bg-white min-h-screen rounded-t-[30px] relative z-15 ">
<motion.div
className="absolute -top-4 left-0 right-0 mx-auto w-fit bg-[#130c0c] text-[#ffffff] bg-opacity-80 text-sm py-2 px-4 rounded-lg shadow-lg"
initial={{ y: 0, opacity: 0.7 }}
Expand Down Expand Up @@ -142,7 +142,7 @@ export default function HomePage() {
</div>

{/* 추천 멘토 섹션 */}
<div className="mt-14 px-7 mb-20">
<div className="mt-14 px-7 pb-20">
<h2 className="text-lg font-semibold">
회원님이 관심있어 할 멘토 추천
</h2>
Expand Down
Loading