공유 링크 접근 플로우
문서 정보
- 작성일: 2026-02-23
- 최종 업데이트: 2026-02-23
- 버전: v1.0.0
TL;DR
LEVEL_1은 비밀번호만으로 즉시 접근, LEVEL_2는 비밀번호 + 오너 승인이 필요합니다. 거절된 사용자도 재접근 시 현재 보안 레벨에 따라 자동 분기 처리됩니다.
목차
핵심 개념
보안 레벨
| 레벨 | 인증 방식 | 접근 결과 |
|---|---|---|
| LEVEL_1 | 비밀번호만 | 즉시 ACCESSIBLE |
| LEVEL_2 | 비밀번호 + 오너 승인 | REQUESTED → 오너가 승인/거절 |
데이터 모델 관계
상태값 정의
UserSchedule.accessStatus
| 상태 | 의미 |
|---|---|
ACCESSIBLE | 접근 가능 (영상 시청, 패스 선택 가능) |
REQUESTED | 승인 대기 중 (LEVEL_2 전용) |
REJECTED | 거절됨 (재접근 가능) |
ShareRequest.requestStatus
| 상태 | 의미 |
|---|---|
PENDING | 오너 응답 대기 중 |
APPROVED | 승인됨 |
REJECTED | 거절됨 |
신규 사용자 접근 플로우
기존에 UserSchedule이 없는 사용자가 공유 링크에 접근하는 플로우입니다.
- LEVEL_1: 비밀번호 검증 후 즉시
ACCESSIBLE→ Case 1 상세 플로우 - LEVEL_2: 비밀번호 검증 후
REQUESTED(오너 승인 대기) → Case 2 상세 플로우
거절된 사용자의 재접근
거절된 사용자가 다시 접근하는 경로는 2가지입니다.
accessShareLink | reRequestShareLink | |
|---|---|---|
| 진입 | 공유 링크 URL 직접 접속 | 앱 내 재신청 버튼 |
| 비밀번호 | 필수 | 필수 |
| 커스텀 메시지 | 불가 (기본 메시지) | 가능 |
| LEVEL_1 결과 | ACCESSIBLE | ACCESSIBLE |
| LEVEL_2 결과 | REQUESTED | REQUESTED |
상세 플로우:
- LEVEL_2 유지: 비밀번호 입력 → 재신청 →
REQUESTED→ Case 5 상세 플로우 - 다운그레이드 (2→1): 비밀번호 입력 → 자동 승인 →
ACCESSIBLE→ Case 6 상세 플로우 - 레벨 재변경 (2→1→2): 비밀번호 입력 → 재신청 →
REQUESTED→ Case 7 상세 플로우
보안 레벨 변경 시 영향
오너가 보안 레벨을 변경할 때의 영향과 제약을 정리합니다.
LEVEL_2 → LEVEL_1 다운그레이드
제약 조건: PENDING 요청이 있으면 다운그레이드 불가
- ShareLink의
accessLevel만 변경됩니다 - 기존 사용자의 UserSchedule/ShareRequest 상태는 변경되지 않습니다
- 거절된 사용자가 재접근하면 현재 레벨(LEVEL_1)에 따라 즉시 접근 허용됩니다
LEVEL_1 → LEVEL_2 업그레이드
- 기존
ACCESSIBLE사용자는 영향 없음 (접근 유지) - 이후 신규 접근자만 LEVEL_2 플로우를 거칩니다
전체 케이스 매트릭스
사용자가 accessShareLink를 호출했을 때의 모든 케이스입니다.
케이스 트리
사용자 접근 요청 (accessShareLink)
│
│ 기존 상태?
│
├── 신규 (UserSchedule 없음)
│ ├── LEVEL_1 → 즉시 ACCESSIBLE ··················· Case 1
│ └── LEVEL_2 → REQUESTED (승인 대기) ············· Case 2
│
├── ACCESSIBLE → 기존 UserSchedule 반환 ·············· Case 3
│
├── REQUESTED → "승인 대기 중" 에러 (차단) ·········· Case 4
│
└── REJECTED → 비밀번호 재입력
│
│ 현재 레벨?
│
├── LEVEL_2 (변경 없음) → 재신청 REQUESTED ······ Case 5
├── LEVEL_1 (2→1 변경) → 자동 승인 ACCESSIBLE ·· Case 6
└── LEVEL_2 (2→1→2) → 재신청 REQUESTED ······ Case 7
케이스 상세
각 케이스의 상세 시퀀스 다이어그램은 링크를 참고하세요.
| # | 기존 상태 | 레벨 변경 | 현재 레벨 | 결과 | 상세 |
|---|---|---|---|---|---|
| 1 | 없음 (신규) | - | LEVEL_1 | ACCESSIBLE | 상세 플로우 |
| 2 | 없음 (신규) | - | LEVEL_2 | REQUESTED | 상세 플로우 |
| 3 | ACCESSIBLE | 무관 | 무관 | ACCESSIBLE | 상세 플로우 |
| 4 | REQUESTED | 무관 | 무관 | 차단 | 상세 플로우 |
| 5 | REJECTED | 변경 없음 | LEVEL_2 | REQUESTED | 상세 플로우 |
| 6 | REJECTED | 2→1 다운그레이드 | LEVEL_1 | ACCESSIBLE | 상세 플로우 |
| 7 | REJECTED | 2→1→2 재변경 | LEVEL_2 | REQUESTED | 상세 플로우 |
Case 5, 6, 7의 공통점
모두 기존 REJECTED 상태에서의 재접근입니다. 현재 ShareLink의 accessLevel에 따라 자동 분기됩니다.
- LEVEL_1 → 즉시
ACCESSIBLE(자동 승인) - LEVEL_2 →
REQUESTED(승인 대기)
발생 불가 케이스
| 조합 | 불가 이유 |
|---|---|
REQUESTED + LEVEL_1 (다운그레이드) | updateShareLink에서 PENDING 요청이 있으면 다운그레이드를 차단합니다. 오너는 모든 PENDING 요청을 처리한 후에만 레벨을 변경할 수 있습니다. |
상태 전이 다이어그램
UserSchedule.accessStatus 전이
ShareRequest.requestStatus 전이
재접근 경로
FAQ
Q: 오너가 보안 레벨을 변경하면 기존 사용자에게 영향이 있나요?
기존 ACCESSIBLE 사용자에게는 영향이 없습니다. 변경된 레벨은 이후 신규 접근자 또는 재접근하는 사용자에게만 적용됩니다.
Q: 거절된 사용자가 재접근할 때 비밀번호가 바뀌었으면 어떻게 되나요?
변경된 비밀번호를 입력해야 합니다. 비밀번호 검증은 재접근 시에도 동일하게 수행됩니다.
Q: LEVEL_2에서 거절 후 LEVEL_1로 변경되면, 거절된 사용자는 어떻게 접근하나요?
공유 링크 URL로 직접 접속하여 비밀번호를 입력하면 즉시 ACCESSIBLE 상태가 됩니다. 앱 내 재신청 버튼을 통해서도 동일하게 즉시 접근됩니다.
Q: 재접근 횟수에 제한이 있나요?
현재 횟수 제한은 없습니다. ShareRequest의 requestCount로 재요청 횟수를 추적하고 있으며, 추후 정책에 따라 제한을 추가할 수 있습니다.
관련 문서
- Schedule Share 비즈니스 정책 (
docs/domains/user-schedule/schedule-share-business-policy.md, 레거시) - Share Transaction Builder 설계 (
docs/domains/user-schedule/schedule-share-transaction-builder-design.md, 레거시)