iykyka/docs/invite-ops.md

2.3 KiB

초대 코드 운영 절차 (Phase 1 C)

클로즈드 베타 가입은 미리 발급된 1회용 초대 코드로만 가능하다 (POST /auth/signupInviteCode 검증).

발급자 권한

역할 권한
발급자 (Issuer) Master(또는 Master가 지정한 1명). ADMIN_API_TOKEN을 가진 주체만 발급·목록·회수
일반 사용자 초대 발급 불가. 받은 코드로 가입만 가능
CI / 에이전트 프로덕션 ADMIN_API_TOKEN을 저장·공유하지 않음

토큰은 서버 환경변수 ADMIN_API_TOKEN으로만 주입한다. 레포·채팅·커밋에 넣지 않는다.

발급 규칙

  1. 용도 메모 필수 권장note에 수신자/채널(예: 지인-김ㅇㅇ, PoC#3-참가자3)을 남긴다.
  2. 만료 — 기본 14일. 장기 코드는 만들지 않는다 (expires_in_days).
  3. 배치 — 한 번에 최대 20개 (count). 대량 발급 전 Master 확인.
  4. 1코드 = 1가입. 재사용 불가. 계정 삭제 후에도 코드는 “사용됨”으로 남는다.
  5. 회수 — 전달 전 유출·오배포 시 POST /invites/:code/revoke. 이미 사용된 코드는 회수 불가.

운영 커맨드

export ADMIN_API_TOKEN=...   # 로컬/서버에만
export CORE=http://127.0.0.1:8080

# 단일 발급 (14일, 메모)
curl -sS -X POST "$CORE/invites" \
  -H "Authorization: Bearer $ADMIN_API_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"note":"지인-테스트","expires_in_days":14}'

# 배치 5개
curl -sS -X POST "$CORE/invites" \
  -H "Authorization: Bearer $ADMIN_API_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"note":"베타-1차","expires_in_days":14,"count":5}'

# 목록
curl -sS "$CORE/invites" -H "Authorization: Bearer $ADMIN_API_TOKEN"

# 회수
curl -sS -X POST "$CORE/invites/<CODE>/revoke" \
  -H "Authorization: Bearer $ADMIN_API_TOKEN"

사용 현황은 GET /admin/metricsinvites_minted / invites_used와 목록의 status(unused|used|expired|revoked)로 본다.

배포 전 체크

  • 프로덕션 ADMIN_API_TOKEN 회전·길이 충분(≥32자 권장)
  • 초대 코드를 공개 채널(SNS/이슈)에 올리지 않음
  • 만료·회수된 코드로 가입이 거절되는지 스모크 테스트