Skip to content

feat(admin): GitHub OAuth 기반 인페이지 어드민 draft 전환 기능 추가 - #166

Merged
devy1540 merged 2 commits into
mainfrom
feat/blissful-solomon-c4e0f4
Jun 30, 2026
Merged

devy1540 merged 2 commits into
mainfrom
feat/blissful-solomon-c4e0f4

Conversation

@devy1540

Copy link
Copy Markdown
Owner

목적

직접 repo를 편집하지 않고도, 관리자가 블로그 페이지 안에서 GitHub 로그인 후 글의 초안(draft) ↔ 발행 상태를 전환할 수 있게 한다.

내용(의도 포함)

  • /admin: GitHub OAuth 로그인 → 글 목록(초안 포함, GitHub API 직접 조회) → 각 글 draft 토글. 토글 시 frontmatter draft 값을 Contents API로 커밋하며, Actions 재빌드로 사이트에 반영된다.
  • 정적 호스팅엔 client_secret을 둘 수 없어, code↔token 교환용 Cloudflare Worker 프록시(oauth-proxy/)를 분리했다. client_secret은 Worker 시크릿에만 존재한다.
  • 관리자 판정은 ADMIN_LOGIN(devy1540)과 GitHub login 일치 여부로 하고, 실제 권한은 토큰이 강제한다.
  • /admin·/admin/callback은 noindex 정적 셸로 프리렌더해 SPA fallback hydration 불일치를 방지한다.
  • 로그인 시 사이드바에 "관리자" 메뉴가 노출된다.
  • VITE_GITHUB_CLIENT_ID·VITE_OAUTH_PROXY_URL이 비어 있으면 /admin은 "미설정" 안내만 표시하고 나머지 사이트는 정상 동작한다(현재 값 비어 있음 → 기능 휴면). 셋업 절차는 docs/admin.md.

성공기준

  • npm run type-check 통과 (에러 0)
  • npm run lint 통과 (에러 0, 경고는 기존 패턴과 동일)
  • npm run build 성공 — /admin·/admin/callback 포함 100페이지 프리렌더 생성
  • npm run preview에서 /admin/, /admin/callback/?code=...&state=..., /를 하드 로드 시 콘솔 hydration 경고·React 에러 0건 확인
  • frontmatter draft 토글 로직(없을 때 추가 / true↔false 전환 / 본문·타 필드 보존) 단위 검증 통과

- /admin: GitHub OAuth 로그인 후 글 draft↔발행 토글 (GitHub Contents API 커밋)
- 토큰 교환용 Cloudflare Worker 프록시(oauth-proxy/) 추가
- /admin·/admin/callback을 noindex 정적 셸로 프리렌더해 hydration 일치 유지
- 로그인 시 사이드바에 관리자 메뉴 노출, 셋업 가이드(docs/admin.md)·환경변수 키 추가
@github-actions github-actions Bot added documentation Improvements or additions to documentation target: main PR targets the main branch area: ui Shared UI, layout, or styling area: routing Routes, app shell, or navigation layout area: seo SEO metadata, prerendering, or public site metadata labels Jun 30, 2026
…-c4e0f4

# Conflicts:
#	src/routes.server.tsx
#	src/routes.tsx
@devy1540
devy1540 enabled auto-merge (squash) June 30, 2026 09:17
@devy1540
devy1540 merged commit b0d5cf5 into main Jun 30, 2026
2 checks passed
@devy1540
devy1540 deleted the feat/blissful-solomon-c4e0f4 branch June 30, 2026 09:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: routing Routes, app shell, or navigation layout area: seo SEO metadata, prerendering, or public site metadata area: ui Shared UI, layout, or styling documentation Improvements or additions to documentation target: main PR targets the main branch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant