Files
sam-docs/projects/auto-login/PROGRESS.md
kent 1f963a5c60 docs: MNG → DEV 자동 로그인 개발 문서 추가
- front/AUTO_LOGIN_GUIDE.md: React 프론트엔드 구현 가이드
- projects/auto-login/PROGRESS.md: 개발 진행 상태 및 세션 재개 가이드

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-20 13:43:37 +09:00

6.1 KiB

MNG → DEV 자동 로그인 기능 개발

최종 업데이트: 2025-12-20 상태: API/MNG 백엔드 완료, 🔄 React 프론트엔드 대기


📋 필수 참조 문서

⚠️ 작업 시작 전 반드시 확인:

  • docs/guides/PROJECT_DEVELOPMENT_POLICY.md - 개발 공통 정책
  • docs/front/AUTO_LOGIN_GUIDE.md - React 프론트엔드 구현 가이드

🎯 개요

MNG 관리자가 사용자 목록에서 "DEV 접속" 버튼을 클릭하면, 해당 사용자로 자동 로그인되어 DEV 사이트로 이동하는 기능.

환경별 URL

환경 MNG DEV
로컬 https://mng.sam.kr https://dev.sam.kr
개발 https://mng.codebridge-x.com https://dev.codebridge-x.com

아키텍처

MNG에서 DEV 접속 클릭
    ↓
MNG API → login_tokens 테이블에 One-Time Token 생성 (5분 만료)
    ↓
MNG → DEV URL + token 파라미터로 새 창 열기
    ↓
DEV React → API token-login 호출
    ↓
API → token 검증 → access_token 발급 → token 삭제 (1회용)
    ↓
DEV React → 로그인 완료 → 대시보드 이동

📊 진행 상태

Phase 1: API 백엔드 (api 프로젝트) 완료

단계 작업 상태 비고
1.1 login_tokens 마이그레이션 생성 완료 2025_12_20_132721_create_login_tokens_table.php
1.2 LoginToken 모델 생성 완료 app/Models/LoginToken.php
1.3 token-login 엔드포인트 추가 완료 ApiController.php
1.4 라우트 추가 완료 POST /api/v1/token-login

Phase 2: MNG 백엔드 (mng 프로젝트) 완료

단계 작업 상태 비고
2.1 DEV_APP_URL 환경설정 완료 .env, config/services.php
2.2 LoginToken 모델 생성 완료 app/Models/LoginToken.php
2.3 loginToken API 메서드 추가 완료 Api/Admin/UserController.php
2.4 라우트 추가 완료 POST /api/admin/users/{id}/login-token
2.5 "DEV 접속" 버튼 UI 추가 완료 users/partials/table.blade.php
2.6 JavaScript 함수 추가 완료 users/index.blade.php

Phase 3: React 프론트엔드 (react 프로젝트) 🔄 대기

단계 작업 상태 비고
3.1 /auto-login 페이지 생성 대기 프론트엔드 담당
3.2 token-login API Route 생성 대기 프론트엔드 담당
3.3 auth-config.ts 수정 대기 프론트엔드 담당

Note: React 구현은 docs/front/AUTO_LOGIN_GUIDE.md 참조


📁 변경된 파일

API 프로젝트 (api/)

api/
├── database/migrations/
│   └── 2025_12_20_132721_create_login_tokens_table.php  (생성)
├── app/Models/
│   └── LoginToken.php                                    (생성)
├── app/Http/Controllers/Api/V1/
│   └── ApiController.php                                 (수정 - tokenLogin 메서드 추가)
└── routes/
    └── api.php                                           (수정 - token-login 라우트 추가)

MNG 프로젝트 (mng/)

mng/
├── .env                                                  (수정 - DEV_APP_URL 추가)
├── config/
│   └── services.php                                      (수정 - dev 설정 추가)
├── app/Models/
│   └── LoginToken.php                                    (생성)
├── app/Http/Controllers/Api/Admin/
│   └── UserController.php                                (수정 - loginToken 메서드 추가)
├── routes/
│   └── api.php                                           (수정 - login-token 라우트 추가)
└── resources/views/users/
    ├── partials/table.blade.php                          (수정 - DEV 접속 버튼 추가)
    └── index.blade.php                                   (수정 - openDevSite 함수 추가)

React 프로젝트 (react/) - 프론트엔드 담당

react/
├── src/app/[locale]/auto-login/page.tsx                  (생성 예정)
├── src/app/api/auth/token-login/route.ts                 (생성 예정)
└── src/lib/api/auth/auth-config.ts                       (수정 예정)

🗄️ 테이블 설계

login_tokens 테이블

Schema::create('login_tokens', function (Blueprint $table) {
    $table->id();
    $table->unsignedBigInteger('user_id')->comment('사용자 ID');
    $table->string('token', 64)->unique()->comment('One-Time Token (64자)');
    $table->timestamp('expires_at')->comment('만료 시간');
    $table->timestamps();

    $table->index('token');
    $table->index('expires_at');
    $table->foreign('user_id')->references('id')->on('users')->cascadeOnDelete();
});

보안 고려사항:

  • 토큰: 64자 랜덤 문자열
  • 만료: 5분
  • 1회용: 사용 후 즉시 삭제
  • HTTPS 필수

📝 변경 이력

날짜 시간 작업 내용 상태
2025-12-20 - React 구현 가이드 문서화
2025-12-20 - 개발 계획 문서 생성
2025-12-20 - API 백엔드 개발 완료
2025-12-20 - MNG 백엔드 개발 완료
2025-12-20 - React 프론트엔드 대기 🔄

🔄 세션 재개 시 체크리스트

세션이 끊겼다가 다시 시작할 때:

  1. 이 문서 (PROGRESS.md) 확인
  2. docs/guides/PROJECT_DEVELOPMENT_POLICY.md 정책 확인
  3. 현재 단계 및 상태 파악
  4. 다음 작업 항목 확인
  5. 관련 파일 상태 확인 (git status)
  6. 이어서 작업 진행

🚀 다음 단계

  1. 프론트엔드 개발자 검토

    • docs/front/AUTO_LOGIN_GUIDE.md 문서 검토
    • React 구현 진행
  2. 테스트

    • MNG 사용자 목록에서 "DEV 접속" 버튼 클릭
    • DEV 사이트 자동 로그인 확인
    • 대시보드 이동 확인
  3. 커밋

    • API 프로젝트 커밋
    • MNG 프로젝트 커밋

Note: 이 문서는 작업 진행에 따라 실시간 업데이트됩니다.