Commit Graph

21 Commits

Author SHA1 Message Date
aaf92baa9f fix: 입력 검증·보안 헤더·접근성·UX 개선
All checks were successful
Client CI/CD / deploy (push) Successful in 25s
- 로그인/회원가입 입력 길이 제한 (username 50자, password 100자)
- 공지사항 관리 입력 길이 제한 (제목 200자, 내용 10000자)
- AnnouncementBoard aria-expanded 접근성 속성 추가
- DownloadSection useEffect 중복 API 호출 제거
- nginx 보안 헤더 (X-Content-Type-Options, X-Frame-Options)
- nginx /assets/ 장기 캐싱 (immutable, 1년)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-13 17:48:24 +09:00
97453b1d81 fix: 코드 리뷰 기반 전체 개선 — 보안, 품질, UX
All checks were successful
Client CI/CD / deploy (push) Successful in 30s
- refreshToken 중복 로직 일원화 (동시 호출 방지 포함)
- 파일 업로드 401 시 토큰 갱신 후 재시도 추가
- XHR JSON.parse 에러 보호
- index.html lang="ko", title "One of the plans" 변경
- Vite 기본 에셋(vite.svg, react.svg) 및 빈 App.css 제거
- 공지 CRUD API 레이어 분리 (AnnouncementAdmin → announcements.js)
- load 함수 useCallback 적용 및 useEffect 의존성 정상화
- 로딩/빈 목록 상태 표시 추가 (AnnouncementBoard, UserAdmin)
- 누락 CSS 정의 추가 (announcement-error, announcement-empty)
- 로그인/회원가입 빈 필드 클라이언트 검증 추가
- 공지 등록 시 빈 제목/내용 에러 피드백 추가

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 14:38:54 +09:00
c2e3be491d feat: SSAFY OAuth 2.0 로그인 클라이언트 구현
All checks were successful
Client CI/CD / deploy (push) Successful in 34s
SSAFY 로그인 버튼 연동, 콜백 페이지 추가, AuthContext에 setUserFromSSAFY 메서드 추가.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 23:56:06 +09:00
90e9922bde fix: 게임 시작 흐름 안정화 및 UX 개선
All checks were successful
Client CI/CD / deploy (push) Successful in 12s
- 게임 시작 전 토큰 리프레시 (만료 토큰 전달 방지)
- 토큰 null 가드 (다른 탭 로그아웃 시 로그인 유도)
- 토큰 URL 인코딩 (encodeURIComponent)
- 런처 미설치 시 힌트 강조 표시
- 게임 시작 버튼 로딩 상태 + 더블 클릭 방지
- 다운로드 정보 실패 시 재시도 버튼 추가
- 비밀번호 강도 실시간 피드백 (약함/보통/강함)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-06 11:11:10 +09:00
6fb7e2cbc5 fix: 보안 강화, 리프레시 토큰 도입, 연계 오류 수정
- api/client: 리프레시 토큰 자동 갱신 (401 시 재시도, 동시 요청 dedup)
- api/client: 204 No Content 처리 추가 (res.json() 크래시 방지)
- api/client: 서버 에러 메시지 body에서 파싱하여 전달
- api/auth: logout 함수 추가 (서버 세션 삭제), 미사용 refreshToken 함수 제거
- AuthContext: 로그인 시 refreshToken 저장, 로그아웃 시 서버 호출 분리
- AuthContext: 401 이벤트는 로컬 세션만 정리 (clearSession 분리)
- DownloadSection: 게임 시작 토큰을 localStorage에서 직접 읽기 (스테일 방지)
- DownloadAdmin: XHR 401 처리, Content-Type 헤더 추가
- AnnouncementAdmin: 등록/수정/삭제 에러 상태 표시 추가
- AnnouncementBoard: API 실패 시 에러 메시지 표시
- UserAdmin: 권한 변경/삭제 에러 처리 추가

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-06 09:51:35 +09:00
f85e261366 fix: 런처 삭제 시 게임 시작 불가 이슈 해결
All checks were successful
Client CI/CD / deploy (push) Successful in 22s
blur 이벤트 기반 런처 감지 로직을 제거하고 런처 다운로드 버튼을
항상 노출하도록 변경. 레지스트리만 남아있고 런처 파일이 없는 경우에도
사용자가 직접 런처를 재다운로드할 수 있도록 함.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-05 13:49:05 +09:00
2cb4b9419f feat: 게임 가제 'One of the plans' UI 텍스트 적용
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-25 00:18:13 +09:00
7e4e5a1801 feat: 런처/게임 분리 배포 구조 적용
All checks were successful
Client CI/CD / deploy (push) Successful in 12s
- 런처 미설치 시 launcher.exe만 다운로드 (게임 전체 zip 아님)
- 관리자 페이지에 런처/게임 별도 업로드 섹션 분리
- 힌트 문구 업데이트

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-24 23:34:17 +09:00
eb579ded5c feat: 게임 배포 관리 UI를 파일 직접 업로드 방식으로 전환
All checks were successful
Client CI/CD / deploy (push) Successful in 12s
- zip 파일 업로드 → XHR progress bar로 진행률 표시
- 업로드 후 버전·파일명·크기·해시 자동 표시
- 현재 배포 중인 빌드 정보 상단에 표시

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-24 23:25:14 +09:00
e496de7e56 feat: 게임 시작/다운로드 버튼 통합
All checks were successful
Client CI/CD / deploy (push) Successful in 11s
- 단일 "게임 시작" 버튼으로 통합
- 런처 설치 시 게임 실행, 미설치 시 자동 다운로드 (blur 감지)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-24 22:48:47 +09:00
4ec4f9a0a3 fix: UserAdmin의 useAuth import 경로 수정
All checks were successful
Client CI/CD / deploy (push) Successful in 10s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-24 22:41:31 +09:00
2163d0f311 fix: 관리자 다운로드 폼 에러 피드백 추가 및 nginx HTML 캐싱 방지
All checks were successful
Client CI/CD / deploy (push) Successful in 9s
- 저장 실패 시 에러 메시지 표시
- nginx index.html Cache-Control: no-store 설정

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-24 22:34:45 +09:00
4047014cea feat: 다운로드 관리 페이지에 fileHash 입력 필드 추가
All checks were successful
Client CI/CD / deploy (push) Successful in 10s
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-24 22:22:49 +09:00
6998ffd6a3 feat: 게임 시작 버튼 추가 및 AuthContext 린트 에러 수정
All checks were successful
Client CI/CD / deploy (push) Successful in 10s
- DownloadSection에 a301:// 커스텀 URI로 게임 실행하는 버튼 추가
- AuthContext에서 createContext와 useAuth 훅을 별도 파일로 분리하여 react-refresh 린트 에러 해결

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 20:55:27 +09:00
e025fdfe87 feat: JWT 만료/로그아웃 시 자동 리다이렉트 처리
All checks were successful
Client CI/CD / deploy (push) Successful in 11s
- 401 응답 시 auth:unauthorized 이벤트 발생 (client.js)
- AuthContext에서 이벤트 수신 시 자동 로그아웃
- 관리자 페이지에서 인증 만료 시 메인으로, 그 외는 로그인 페이지로 이동

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-24 16:38:46 +09:00
2ac2823ecc feat: 회원가입 페이지 및 API 추가
All checks were successful
Client CI/CD / deploy (push) Successful in 11s
- RegisterPage 추가 (아이디/비밀번호/비밀번호 확인 폼, 클라이언트 유효성 검사)
- /register 라우트 추가 (로그인 상태 시 홈 리다이렉트)
- 로그인 페이지에 회원가입 링크 및 가입 완료 안내 메시지 추가
- api/auth.js에 register() 함수 추가

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-24 15:11:32 +09:00
1359c38222 feat: 관리자 페이지 추가 (공지사항, 다운로드, 유저 관리)
- /admin 라우트 추가 (admin 권한 전용)
- 공지사항 CRUD, 다운로드 정보 수정, 유저 권한/삭제 관리
- AuthContext에 role 추가 및 localStorage 저장
- 홈 헤더에 admin 링크 표시 (admin만 노출)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-24 14:52:28 +09:00
9fa665c9c0 fix: 다운로드 정보 없을 때 준비중 메시지 표시
All checks were successful
Client CI/CD / deploy (push) Successful in 12s
404 응답 시 컴포넌트가 사라지는 대신 안내 문구 노출

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-24 14:39:26 +09:00
86c6720f30 feat: mock 데이터 제거 및 실제 API 연동
- 모든 API 파일에서 mock 제거, 실제 백엔드 호출로 전환
- 공지사항 날짜 ISO 포맷에서 날짜만 표시하도록 수정
- VITE_API_BASE_URL을 https://a301.api.tolelom.xyz로 변경 (.env, gitignore)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-24 14:32:02 +09:00
7e2f9419ab Add frontend pages with login, download, and announcements
All checks were successful
Client CI/CD / deploy (push) Successful in 12s
- React Router v7: public home page, /login page
- Auth context with JWT localStorage management
- Login: ID/PW form + SSAFY login button (UI only)
- Home: hero banner, download section (login required), announcement board
- API layer with mock data (ready for Go Fiber backend)
- Color scheme: #2E2C2F dark + #BACDB0 accent
- Add .env.example for environment variable reference

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 12:40:29 +09:00
fb0efa4b4b Chore: project init 2026-02-24 11:18:53 +09:00