# InfoKeyword 인증 변경: Google OAuth + 어드민 승인제

## 개요
기존 이메일/비밀번호 로그인을 Google OAuth로 변경하고, 어드민 승인제를 추가한다.

## 프로젝트 경로
- `/home/jay/projects/InfoKeyword/`
- 현재 프론트엔드: `src/` (Next.js 15 App Router)
- Firebase 프로젝트: insuwiki-j2h

## 변경 내용

### 1. Google OAuth 로그인으로 변경
- 기존 이메일/비밀번호 로그인 제거
- Firebase Auth의 Google Provider로 변경
- `/login` 페이지: "Google로 로그인" 버튼 하나만
- `/signup` 페이지 제거 (Google 로그인으로 자동 가입)

### 2. 어드민 승인제
- 로그인 성공해도 어드민이 승인한 사용자만 서비스 이용 가능
- 미승인 사용자: 로그인 후 "승인 대기 중" 안내 페이지로 이동
- **승인 유지기간: 30분** — 30분 지나면 다시 승인 필요
- Firestore 컬렉션 `ik_users`에 승인 상태 저장:
  ```
  ik_users/{uid}
    - email: string
    - displayName: string
    - approved: boolean
    - approvedAt: timestamp | null
    - approvalDuration: number (분 단위, 0 = 무제한)
    - isAdmin: boolean
    - lastLoginAt: timestamp
  ```

### 3. 어드민 계정
- **jonghyuk.jeon@gmail.com** = 어드민
- 어드민 특징:
  - 승인 유지기간 없음 (무제한)
  - 다른 사용자 승인/거부 가능
  - 자동으로 approved=true, isAdmin=true 설정

### 4. 어드민 페이지 (`/admin`)
- 어드민만 접근 가능
- 사용자 목록 (email, 최종 로그인, 승인 상태, 승인 시각)
- 사용자별 "승인" / "승인 취소" 버튼
- 승인 시 approvedAt = now(), approvalDuration = 30 자동 설정

### 5. 승인 체크 로직
- 모든 보호 페이지 접근 시:
  1. Firebase Auth 로그인 여부 확인
  2. Firestore에서 사용자 승인 상태 확인
  3. `approved === true` AND (`approvalDuration === 0` OR `now - approvedAt < approvalDuration분`)
  4. 조건 미충족 시 → "승인 대기 중" 페이지로 리다이렉트

### 6. Firebase Console 설정 필요 사항
- Firebase Auth에서 Google 로그인 provider 활성화 필요
- gcloud CLI로 확인/활성화 가능

## 주의사항
- 기존 `src/lib/auth-context.tsx` 수정
- 기존 `src/lib/firebase.ts` 수정 (Google Provider 추가)
- 기존 `/login/page.tsx` 수정
- `/signup/page.tsx` 제거 또는 리다이렉트
- 기존 테스트 중 인증 관련 테스트 업데이트
- Worker API는 변경 없음 (X-API-Key 인증 유지)

## 완료 조건
1. Google OAuth 로그인 동작
2. 미승인 사용자 → "승인 대기 중" 페이지
3. 어드민 페이지에서 사용자 승인/취소 가능
4. jonghyuk.jeon@gmail.com 자동 어드민 설정
5. 승인 30분 후 만료 동작
6. 어드민은 만료 없음
7. npm run build 성공
8. 테스트 PASS
