명시적 플로우
이용약관에 대한 명시적 동의 플로우 구성하기
명시적(explicit) 동의 플로우는 사용자가 각 약관 항목에 대해 체크박스를 직접 선택하여 동의하는 방식이에요. 법적 요구사항이 엄격한 환경이나, 선택적 동의 항목(마케팅 수신 등)을 제공하고 싶을 때 적합해요.
구성 방법
terms 섹션에서 consent_mode를 explicit으로 설정해요 (기본값이므로 생략할 수도 있어요).
# config.yaml
terms:
- id: tos
required: true
consent_mode: explicit
version: "1.0.0"
content:
ko:
title: 이용약관
type: link
content: https://example.com/ko/terms
en:
title: Terms of Service
type: link
content: https://example.com/en/terms
- id: privacy
required: true
consent_mode: explicit
version: "1.0.0"
content:
ko:
title: 개인정보 처리방침
type: link
content: https://example.com/ko/privacy
en:
title: Privacy Policy
type: link
content: https://example.com/en/privacy
- id: marketing
required: false
consent_mode: explicit
version: "1.0.0"
content:
ko:
title: 마케팅 수신 동의
type: text
content: 마케팅 이메일 및 프로모션 알림을 수신하시겠어요?
en:
title: Marketing Communications
type: text
content: Would you like to receive marketing emails and promotional notifications?
설정 항목
| 항목 | 필수 | 기본값 | 설명 |
|---|---|---|---|
id | O | - | 약관의 고유 식별자예요. 소문자 영숫자, -, _만 사용할 수 있어요. |
required | X | true | 동의 필수 여부예요. true이면 체크하지 않으면 가입할 수 없어요. |
consent_mode | X | explicit | explicit으로 설정하면 체크박스가 표시돼요. |
version | O | - | 약관의 버전 문자열이에요. |
약관 내용 유형
약관 내용(content)은 언어별로 두 가지 유형을 지원해요.
링크 유형 (type: link)
외부 URL로 약관 전문을 연결해요. 체크박스 옆에 약관 이름이 링크로 표시돼요.
content:
ko:
title: 이용약관
type: link
content: https://example.com/ko/terms
텍스트 유형 (type: text)
약관 내용을 인라인으로 표시해요. 체크박스 옆의 약관 이름을 클릭하면 내용이 모달 창으로 표시돼요.
content:
ko:
title: 마케팅 수신 동의
type: text
content: 마케팅 이메일 및 프로모션 알림을 수신하시겠어요?
동작 방식
회원가입 시
비밀번호 기반 회원가입 화면에서 명시적 약관 항목이 체크박스로 표시돼요.
required: true인 약관은 반드시 체크해야 가입이 가능해요.required: false인 약관은 선택 사항이에요.
OAuth 소셜 로그인 시
명시적 약관이 하나라도 존재하는 경우, 새로운 사용자의 소셜 로그인 시 별도의 약관 동의 페이지(/terms)로 이동해요. 사용자가 필수 약관에 동의한 후에야 계정 생성이 완료돼요.
약관 버전 업데이트
약관의 version 값을 변경하면, 해당 약관에 이미 동의한 기존 사용자에게 재동의를 요청할 수 있어요.
# 기존
- id: tos
version: "1.0.0"
# 변경 후
- id: tos
version: "2.0.0"
버전이 변경되면:
- 기존 사용자가 다음 로그인 시 약관 동의 페이지(
/terms)로 이동해요. - 업데이트된 약관 옆에 버전이 변경되었다는 안내가 표시돼요.
- 사용자가 재동의하면 새 버전으로 동의 기록이 갱신돼요.
Note
버전 비교는 정확한 문자열 일치로 이루어져요. "1.0.0"에서 "1.0.1"로 변경해도 재동의가 필요해요.