Skip to content

Conversation

@LimSR12
Copy link
Collaborator

@LimSR12 LimSR12 commented Dec 18, 2025

⏳ 리뷰 예상 시간

5분

📝 기능 설명

  • 수료생 기수 검증 로직 e2e 테스트 결과

⭐️ 리뷰 포인트

  • 본 PR은 Github OAuth 를 활용해 수료생 기수 검증이 가능한지 테스트해보는 것을 목적으로 작성했습니다.
  • 시간이 넉넉하지 않다보니 최소한의 구현만 해둔 상태입니다.
  • 부스트캠프 공식 Organization 에는 서드파티 oauth app 접근이 제한되어 있다고 합니다. 현재 e2e 테스트용 코드라서 바로 request를 보내기보다는, 원래 제가 속해있던 다른 Organization 으로 테스트 진행해봤습니다.

🛠 작업 사항

  • AuthController
    • api/auth/login uri 로 요청을 받으면 제가 .env 에 추가해둔 GITHUB_CLIENT_IDGITHUB_REDIRECT_URI 를 통해 로그인 화면으로 redirect 시킵니다.
    • auth/github/callback?code= uri 의 콜백을 처리합니다.
      • return await this.authService.verifyCohortByGithubOAuth(code);
  • AuthService
    • 콜백으로 받은 일회용 인가코드를 통해 리소스서버에 접근할 Access Token 을 발급받습니다.
      • GithubOAuthClient.exchangeCodeForToken(code)
    • 발급받은 Access Token으로 내 organization 정보를 받아옵니다.
      • GithubOAuthClient.getUserOrgs(accessToken)
    • org 목록을 미리 정의해둔 cohort map 과 비교하여 일치하는게 있다면 반환합니다.
  • Nest 서버에서 외부 서버로 요청 보낼 때 는 Nest 공식문서에 따라 Axios 사용했습니다.

✅ 작업 체크리스트

  • cohort 목록 정의
  • 내가 속해있는 organization 정보가 잘 들어오는지 확인

📎 개발 일지 및 참고 자료

- .env 사용을 위해 config 패키지를 설치했습니다.
- Github OAuth 로그인 과정에서 깃허브 서버로 요청을 보내기 위해 axios와 nestjs/axios 를 설치했습니다.
- 처음 로그인 요청을 보내는 과정에서 쿼리 파라미터에 scope 를 read:org 로만 설정해두었습니다.
- cohort-rules 에서 현재 6~10기 까지의 orgs 주소가 확인되었으나 1~5기는 확인이 되지 않아 일부 누락된 상태입니다.
- 테스트용으로 제가 속해있는 0x05-hex-five 라는 orgs 를 추가해 테스트해보았습니다.
@LimSR12 LimSR12 self-assigned this Dec 18, 2025
@LimSR12 LimSR12 added BE 백엔드 관련 이슈 POC Proof of Concept (기술 검증) labels Dec 18, 2025
@LimSR12
Copy link
Collaborator Author

LimSR12 commented Dec 18, 2025

  • 한 사람이 여러 조직에 속해있을 경우 -> 어떻게 처리할지 (마스터, 리뷰어, 운영진)
  • 베이직, 챌린지 수료생은 어떻게 인증할 수 있을지? -> 멤버십 수료자 로 한정짓자?
  • 챌린지 기간중에 서비스 가입하려고 한다면 가입이 된다 ??? -> 조치 가능할 것 같다

@LimSR12 LimSR12 marked this pull request as draft December 18, 2025 09:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

BE 백엔드 관련 이슈 POC Proof of Concept (기술 검증)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants