o2o-triple-pick/backend/app
jwkim 7705099c64 feat(auth): 카카오 로그인 — o2o-castad-backend 인증 스택 이식
백엔드 (castad 와 동일 흐름, triplepick 스타일로 재작성):
- users/refresh_tokens 테이블 (신규 — create_all 로 자동 생성)
- 카카오 OAuth (code → 토큰 → 사용자 정보), aiohttp 대신 httpx
- JWT HS256 access 60분 / refresh 7일, Refresh Token Rotation
  (재사용 감지 시 TOKEN_REVOKED, castad 동일 에러 코드 체계)
- /api/auth/{kakao/login, kakao/callback, refresh, logout, me}
- 콜백 → 프론트 리다이렉트는 쿼리 대신 해시 프래그먼트로 토큰 전달
  (서버 로그·Referer 에 토큰 노출 방지 — castad 방식에서 한 단계 보강)
- 크레딧·소셜계정 연동 등 castad 전용 개념은 제외

프론트:
- lib/auth.ts — 토큰 보관·자동 갱신·/me 캐시·useAuth 훅
- Hero 에 카카오 로그인 버튼(브랜드 노랑) / 프로필 칩 + 로그아웃
- 투표 폼(Arena) 이메일을 로그인 계정 이메일로 자동 채움
  (기존 이메일 기반 투표·리더보드 파이프라인은 그대로 유지)

설정: KAKAO_CLIENT_ID/SECRET/REDIRECT_URI, JWT_SECRET (.env.example 참고)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-14 15:42:54 +09:00
..
routers feat(auth): 카카오 로그인 — o2o-castad-backend 인증 스택 이식 2026-08-14 15:42:54 +09:00
services feat(auth): 카카오 로그인 — o2o-castad-backend 인증 스택 이식 2026-08-14 15:42:54 +09:00
__init__.py Refactor: Next.js+Firebase → React(Vite) + FastAPI + PostgreSQL 2026-06-10 13:04:35 +09:00
config.py feat(auth): 카카오 로그인 — o2o-castad-backend 인증 스택 이식 2026-08-14 15:42:54 +09:00
database.py docker compose 수정 , 2026-06-10 15:23:05 +09:00
domain.py feat: KBO/MLB 운영 안정화 — 순위 탭·라이브 개선·취소/더블헤더 지원·야구 점수제 2026-07-22 11:01:10 +09:00
main.py feat(auth): 카카오 로그인 — o2o-castad-backend 인증 스택 이식 2026-08-14 15:42:54 +09:00
models.py feat(auth): 카카오 로그인 — o2o-castad-backend 인증 스택 이식 2026-08-14 15:42:54 +09:00
regenerate_ai.py perf(ai): 자동 생성은 비어있는 예측만 채우도록(기존 보존) 2026-06-11 16:17:12 +09:00
schedule_data.py Voting opens at D-5 (120h before kickoff), was D-2 2026-06-12 17:24:29 +09:00
schemas.py feat: KBO/MLB 운영 안정화 — 순위 탭·라이브 개선·취소/더블헤더 지원·야구 점수제 2026-07-22 11:01:10 +09:00
scoring.py feat: KBO/MLB 운영 안정화 — 순위 탭·라이브 개선·취소/더블헤더 지원·야구 점수제 2026-07-22 11:01:10 +09:00
seed_data.py Refactor: Next.js+Firebase → React(Vite) + FastAPI + PostgreSQL 2026-06-10 13:04:35 +09:00
seed.py Refactor: Next.js+Firebase → React(Vite) + FastAPI + PostgreSQL 2026-06-10 13:04:35 +09:00
teams_baseball.py feat(mls): MLS 리그 추가 — ESPN 비공식 API 연동 2026-08-14 13:47:13 +09:00
teams_data.py Load all 12 groups' schedule (72 matches) + Naver-style schedule UI 2026-06-12 14:56:24 +09:00
teams_mls.py feat(mls): MLS 리그 추가 — ESPN 비공식 API 연동 2026-08-14 13:47:13 +09:00
worker.py feat(mls): MLS 리그 추가 — ESPN 비공식 API 연동 2026-08-14 13:47:13 +09:00