Skip to content

docs: 인증·관리자 설계와 저장소 현행화 - #80

Merged
SD-gif merged 1 commit into
mainfrom
docs/auth-admin-design-and-cleanup
Aug 24, 2026
Merged

docs: 인증·관리자 설계와 저장소 현행화#80
SD-gif merged 1 commit into
mainfrom
docs/auth-admin-design-and-cleanup

Conversation

@SD-gif

@SD-gif SD-gif commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

문서만 바꾼다. 코드 변경 없음.

1. 인증·인가와 관리자 기능 설계 (신규)

docs/auth-and-admin-spec.md. 결정된 것은 다음 네 가지다.

항목 결정
인증 구글 ID 토큰 검증 후 자체 JWT 발급
리프레시 Redis, 회전 방식
일정 소유권 schedules.user_id 추가 — data 저장소 동시 변경
관리자 신고 처리, 사용자 관리, 장소 데이터, 통계

인가 적용은 마지막에 둔다. 비로그인 요청이 401 을 받기 시작하는 유일한 파괴적
변경이라 프론트 배포와 맞춰야 한다. 그 전 단계(로그인·토큰 발급·소유자 기록·관리자
기능)는 토큰을 주되 요구하지 않으므로 어떤 클라이언트도 깨지지 않는다. 전체 12일 중
파괴적 구간은 마지막 2.5일뿐이다.

다만 /api/v1/admin/** 은 예외다. SecurityConfig 가 지금 /api/v1/**
통째로 permitAll() 하므로, 관리자 컨트롤러를 그대로 추가하면 누구나 사용자를
정지시키고 게시물을 지울 수 있다. 만드는 순간부터 hasRole('ADMIN') 이 필요하며,
따라서 로그인·JWT 가 관리자 기능보다 먼저 와야 한다.

설계 중 확인한 현재 상태도 문서 2절에 적었다.

  • SecurityConfig 가 전부 permitAll(). security 스타터는 있으나 꺼진 상태
  • usersemail·provider·role·status 없음
  • schedulesuser_id 없음. 이 테이블은 FastAPI 가 쓴다
  • CORS 허용 헤더에 Authorization 이 없다. 하드코딩이라 설정으로 못 바꾼다.
    같은 이유로 PR Feature/community tables (feat: 커뮤니티 테이블과 게시물 엔티티 추가) #78X-User-Id 도 브라우저 preflight 에서 막힌다

2. CLAUDE.md 현행화

날짜가 2026-08-11 에 멈춰 있어 현재 상태로 갱신한다.

FastAPI 위임 RestClient 주의사항을 표로 추가했다. 반드시
JdkClientHttpRequestFactory + HTTP_1_1 조합이어야 한다.

잘못 쓰면 무슨 일이 나는가
SimpleClientHttpRequestFactory 내부가 HttpURLConnection 이라 PATCH 를 못 보낸다. 일정 수정이 항상 503
HTTP_1_1 미지정 기본값 HTTP/2 로 h2c 업그레이드를 시도하다 uvicorn 이 거부하며 본문이 유실된다. 본문 있는 POST·PATCH 가 전부 422

loc:["body"] 로 오는 422 는 계약 불일치가 아니라 본문 미전송이라는 판별법과,
com.sun.net.httpserver 스텁으로는 재현되지 않는다는 점도 함께 적었다.

즉흥 여행 추천(#79)이 다른 위임 계층과 다르게 동작하는 지점, 지역별 추천 장소를
하려면 무엇이 필요한지도 기록했다.

3. api-change-log

4. .gitignore

.DS_Storeoutput/ 추가. 추적된 적은 없으나 git status 에 계속 떠서
커밋에 잘못 담길 여지가 있었다.

영향

  • API 변경 없음
  • DB·ERD 변경 없음
  • 코드 변경 없음

🤖 Generated with Claude Code

인증·인가와 관리자 기능 설계 문서를 추가한다. 구글 ID 토큰 검증 후 자체 JWT 를
발급하고, 리프레시는 Redis 에 회전 저장한다. 일정에 소유자를 붙이며 이는 data
저장소와 함께 바꿔야 한다. 관리자는 신고 처리·사용자 관리·장소 데이터·통계 네 가지다.

인가 적용은 마지막에 둔다. 비로그인 요청이 401 을 받기 시작하는 유일한 파괴적
변경이라 프론트 배포와 맞춰야 한다. 그 전 단계는 토큰을 주되 요구하지 않으므로
어떤 클라이언트도 깨뜨리지 않는다. 다만 /api/v1/admin/** 만은 만드는 순간부터
인가를 걸어야 한다. SecurityConfig 가 /api/v1/** 를 통째로 permitAll 하고 있어
그대로 두면 누구나 사용자를 정지시킬 수 있다.

CLAUDE.md 를 현재 상태로 갱신한다. FastAPI 위임 RestClient 는 반드시
JdkClientHttpRequestFactory + HTTP_1_1 조합이어야 한다는 주의사항을 표로 남긴다.
PATCH 가 항상 503 이던 문제와 본문이 유실되던 문제를 각각 겪은 결과다. 즉흥 여행
추천(#79)이 다른 위임 계층과 다르게 동작하는 지점도 기록한다.

api-change-log 에 #79 신설과 #76·#77 PATCH 복구를 남긴다.

.gitignore 에 .DS_Store 와 output/ 을 넣는다. 추적된 적은 없으나 git status 에
계속 떠서 커밋에 잘못 담길 여지가 있었다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

🤖 Gemini PR Review

분석 결과 개선할 부분이 없습니다.


Model: `gemini-3.5-flash` · API key: `PRIMARY` · Commit: `390e98e`

@SD-gif
SD-gif merged commit f6fc846 into main Aug 24, 2026
2 checks passed
@SD-gif
SD-gif deleted the docs/auth-admin-design-and-cleanup branch August 24, 2026 11:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant