tiomta.com 인증 게이트 버그 수정 — verifyToken 엔드포인트 미스매치
개요
"계속 작업" 지시로 tiomta 잔여 미완(토큰 migrate E2E)을 점검하다가,
회원 인증이 전면 불능인 버그를 발견·수정·E2E 검증했다. planner Opus 게이트와 게스트→회원 프로필 migrate가 유효 토큰으로도 항상 401이던 근본 원인.
무엇을 했는지
1) 버그 발견 (3중 불일치)
server.js verifyToken()이 auth.crowny.org(:9401) 계약과 어긋남:
- 경로:
POST /api/auth/verify 호출 → 실제 서버엔 없음(404). 올바른 건 GET /api/verify
- 메서드/전달: POST + body
{token} → 실제는 GET + Authorization: Bearer 헤더
- 응답 파싱:
data.valid ? data.user 기대 → 실제는 user 객체를 직접 반환({username,displayName,email,accountId,...})
결과:
/api/verify가 항상 404 →
verifyToken 항상 null →
getUser 항상 null →
모든 회원이 게이트 차단. planner Opus(ai/main)·profile migrate 무력화.
2) 수정
verifyToken을 GET
/api/verify + Bearer 헤더로 교체, 성공 판별을
!data.error && data.username으로 변경. (server.js:203~218)
3) E2E 실증 (수정 전/후 비교)
- 9401에 임시 계정 등록→로그인→유효 토큰 획득
- 수정 전: migrate
{error:login_required}, ai/main 401 (유효 토큰인데 차단)
- 수정 후: ai/main
200, migrate 200
- migrate 풀 시나리오: 게스트 프로필(dream/goalToday/youtube) 작성 → migrate → 회원 프로필로 비파괴 병합(회원 기존값 우선) → 재호출 멱등(
no_guest_profile, 게스트 삭제 확인) ✓
관련 파일
/Users/ef/crowny-tiomta/server.js (verifyToken 수정, 203~218)
/Users/ef/crowny-tiomta/토큰검증.한선 (동반 정본, 컴파일·실행 검증)
- auth 서버 계약 출처:
/Users/ef/crowny-data/auth/auth-server.js (/api/verify GET, line 390)
잔여 이슈
- 9401에 임시 테스트 계정
e2e_migrate_test_37149 1건 잔존(삭제 API 없음, 라이브 DB 직접편집 회피). 세션 토큰은 메모리라 auth 재시작 시 소멸, 프로필만 남음 — 무해.
- IG/Threads 피드 임베드는 여전히 OG 스크랩만(토큰 필요 — 별개 미완).
- 재시작은 수동 nohup. keepalive 데몬은 현재 미실행 → LaunchAgent 영속화 검토 권장.