POP-SPOT v2.22 (2/3) — IDOR 인가 누락 + 저장형 XSS + 메모리/스토리지 누수 일괄 수정
v2.22 변경 기록의 이어지는 부분이다. 같은 검증 ID 7dd04a025b7d1ee4a8291622b82c660450bc44eab0a6179ae48f5670935c6a05를 사용한다.
커밋 ee7a2f8 — feat(v2.21-S10): Spotify OAuth 백엔드 (Phase 1/5)변경 파일 8개
파일 1. PROJECT_CHANGELOG.md
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 2. popspot-backend/src/main/java/com/example/popspotbackend/controller/SpotifyAuthController.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 3. popspot-backend/src/main/java/com/example/popspotbackend/entity/SpotifyAuth.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 4. popspot-backend/src/main/java/com/example/popspotbackend/repository/SpotifyAuthRepository.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 5. popspot-backend/src/main/java/com/example/popspotbackend/service/spotify/SpotifyOAuthService.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 6. popspot-backend/src/main/java/com/example/popspotbackend/service/spotify/TokenEncryption.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 7. popspot-backend/src/main/resources/application.properties
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 8. popspot-backend/src/main/resources/db/migration/V13__spotify_auth.sql
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
커밋 60d1fbf — feat(v2.21-S11): Spotify 연결 UI (Phase 2/5)변경 파일 3개
쉬운 설명: Spotify 연결 UI (Phase 2/5) 작업이다.
바꾼 이유: 배경: 백엔드 OAuth (S10) 가 활성화됐지만 프론트 UI 없어서 사용자가 "Spotify 연결" 버튼을 못 봄. 이번 commit 으로 음악 탭에 연결 칩 추가.
파일 수: 3개이다.
파일 1. popspot-frontend/src/components/music/MusicTab.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 2. popspot-frontend/src/features/music/SpotifyConnectButton.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 3. popspot-frontend/src/features/music/useSpotifyAuth.ts
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
커밋 8d96ff5 — fix(v2.21-S11.1): Spotify endpoint 401 — @AuthenticationPrincipal UserDetails 타입 불일치변경 파일 1개
쉬운 설명: Spotify endpoint 401 — @AuthenticationPrincipal UserDetails 타입 불일치 작업이다.
바꾼 이유: 증상: 로그인 + 유효한 JWT (exp 미래, Authorization 헤더 정상 전달) 인데도 GET /api/spotify/login 이 항상 401.
파일 수: 1개이다.
파일 1. popspot-backend/src/main/java/com/example/popspotbackend/controller/SpotifyAuthController.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
커밋 579cb61 — feat(v2.21-S12~S14): 3-tier 음악 재생 엔진 (Spotify SDK / Preview / YouTube) + 어트리뷰션변경 파일 14개
쉬운 설명: 3-tier 음악 재생 엔진 (Spotify SDK / Preview / YouTube) + 어트리뷰션 작업이다.
바꾼 이유: Phase 3+4+5 묶음. Premium 풀트랙 + Free 30초 깨끗 음원 + YouTube 폴백.
파일 수: 14개이다.
파일 1. popspot-backend/src/main/java/com/example/popspotbackend/controller/MusicController.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 2. popspot-backend/src/main/java/com/example/popspotbackend/controller/SpotifyAuthController.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 3. popspot-backend/src/main/java/com/example/popspotbackend/controller/UserProfileController.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 4. popspot-backend/src/main/java/com/example/popspotbackend/entity/MusicTrack.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 5. popspot-backend/src/main/java/com/example/popspotbackend/entity/SpotifyAuth.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 6. popspot-backend/src/main/java/com/example/popspotbackend/repository/MusicTrackRepository.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 7. popspot-backend/src/main/java/com/example/popspotbackend/service/music/MusicService.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 8. popspot-backend/src/main/java/com/example/popspotbackend/service/music/YouTubeMusicSearchService.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 9. popspot-backend/src/main/java/com/example/popspotbackend/service/spotify/SpotifyOAuthService.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 10. popspot-backend/src/main/java/com/example/popspotbackend/service/spotify/TokenEncryption.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 11. popspot-frontend/next.config.ts
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 12. popspot-frontend/src/components/music/MusicPlayerProvider.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 13. popspot-frontend/src/components/music/usePreviewPlayer.ts
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 14. popspot-frontend/src/components/music/useSpotifyPlayer.ts
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
커밋 21fe83a — fix(v2.21-S13.1): Premium 인데 YouTube 나오던 버그 — spotifyTrackId 필드 불일치변경 파일 2개
쉬운 설명: Premium 인데 YouTube 나오던 버그 — spotifyTrackId 필드 불일치 작업이다.
바꾼 이유: 증상: Premium 연결 상태인데 빌리진(메이저 곡) 이 YouTube 로 재생. 미연결 시에도 YouTube.
파일 수: 2개이다.
파일 1. popspot-frontend/src/components/music/MusicPlayerProvider.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 2. popspot-frontend/src/types/music.ts
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
커밋 2814ca0 — feat(v2.21-S15): iTunes preview 폴백 — Spotify preview_url deprecation 우회변경 파일 3개
쉬운 설명: iTunes preview 폴백 — Spotify preview_url deprecation 우회 작업이다.
바꾼 이유: 진단 결과 (운영 DB): music_track 233개 중 preview_url 채워진 게 0개. Spotify 가 2024-11 부터 신규 앱 (popspot 새 client ID) 의 preview_url 을 null 로 반환. → Free / 미연결 사용자가 30초 깨끗 미리듣기 대신 YouTube (광고) 로 폴백되던 근본 원인.
파일 수: 3개이다.
파일 1. popspot-backend/src/main/java/com/example/popspotbackend/service/music/ITunesPreviewService.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 2. popspot-backend/src/main/java/com/example/popspotbackend/service/music/MusicService.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 3. popspot-frontend/next.config.ts
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
커밋 7cdcc23 — feat(v2.21-S16): 전체화면 앨범아트 시각화 + 한영 검색 연결 + 카테고리 정확도 + 어트리뷰션변경 파일 3개
쉬운 설명: 전체화면 앨범아트 시각화 + 한영 검색 연결 + 카테고리 정확도 + 어트리뷰션 작업이다.
바꾼 이유: 사용자 보고 4건 처리.
파일 수: 3개이다.
파일 1. popspot-backend/src/main/java/com/example/popspotbackend/service/music/MusicService.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 2. popspot-frontend/src/components/music/GlobalMusicPlayer.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 3. popspot-frontend/src/components/music/MusicTab.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
커밋 f365465 — style(v2.21-S16.1): ITunesPreviewService / MusicService spotlessApply 정리변경 파일 2개
쉬운 설명: ITunesPreviewService / MusicService spotlessApply 정리 작업이다.
바꾼 이유: 로컬 spotlessApply 로 reformat 된 working copy 반영 (기능 변경 없음). 다음 백엔드 빌드의 spotlessCheck 통과용.
파일 수: 2개이다.
파일 1. popspot-backend/src/main/java/com/example/popspotbackend/service/music/ITunesPreviewService.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 2. popspot-backend/src/main/java/com/example/popspotbackend/service/music/MusicService.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
커밋 5eb3d7f — fix(v2.21-S16.2): 음악 탭 본문 어트리뷰션도 통일 — 놓친 두 번째 텍스트변경 파일 1개
쉬운 설명: 음악 탭 본문 어트리뷰션도 통일 — 놓친 두 번째 텍스트 작업이다.
바꾼 이유: S16 에서 GlobalMusicPlayer(전체화면)의 "Search · Spotify · Playback · YouTube" 만 바꾸고, MusicTab(음악 탭 본문 하단)의 동일 텍스트는 놓침. 사용자가 "아직 안 바뀜" 보고 — 음악 탭 본문 쪽이었음.
파일 수: 1개이다.
파일 1. popspot-frontend/src/components/music/MusicTab.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
커밋 f3c9981 — docs(v2.21): README + CHANGELOG — S5~S16 누락분 상세 보강변경 파일 2개
쉬운 설명: README + CHANGELOG — S5~S16 누락분 상세 보강 작업이다.
바꾼 이유: CHANGELOG 에 S1~S4 + S10 만 작성돼 있고 S5~S9, S11~S16 이 빠져있던 것을 전부 상세 추가 (ch.29.14 ~ 29.19).
파일 수: 2개이다.
파일 1. PROJECT_CHANGELOG.md
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 2. README.md
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
커밋 f1ef417 — fix(v2.21-S17): Spotify SDK 진행바 안 맞는 현상 — getCurrentState 폴링 추가변경 파일 1개
쉬운 설명: Spotify SDK 진행바 안 맞는 현상 — getCurrentState 폴링 추가 작업이다.
바꾼 이유: 증상: Premium SDK 재생 중 진행바가 멈춰있거나 실제 위치와 어긋남 (사진: 3:09 풀트랙인데 진행바가 0:30 근처에서 정지).
파일 수: 1개이다.
파일 1. popspot-frontend/src/components/music/useSpotifyPlayer.ts
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
커밋 3d18f8b — fix(v2.21-S18): 통합검색 UI · Spotify 콜백 음악탭 복귀 · preview 자동재생 차단변경 파일 6개
쉬운 설명: 통합검색 UI · Spotify 콜백 음악탭 복귀 · preview 자동재생 차단 작업이다.
바꾼 이유: - 통합검색(InlineGlobalSearch): 깨진 ⌘K 박스(폰트 글리프 없음) 제거, type=search→text(입력창의 "선"=취소버튼 제거), width↔min-w 충돌 애니메이션을 opacity+scale 페이드로 교체해 매끄럽게 펼쳐지도록 - Spotify 콜백 인트로 튕김: 이중 ? 생성 버그를 frontendRedirectWith 헬퍼로 차단하고 항상 ?tab=MUSIC&spotify=… 으로 음악 탭 복귀 + middleware deep-link에 spotify 추가 - preview 무음: 브라우저 자동재생 차단 대응 — audio 엘리먼트 1개 재사용(세션 unlock 유지) + 거부 시 다음 사용자 클릭에 1회 재시도 - 문서: README/CHANGELOG에 S17(진행바 폴링)·S18 상세 기록
파일 수: 6개이다.
파일 1. PROJECT_CHANGELOG.md
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 2. README.md
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 3. popspot-backend/src/main/java/com/example/popspotbackend/controller/SpotifyAuthController.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 4. popspot-frontend/middleware.ts
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 5. popspot-frontend/src/components/layout/InlineGlobalSearch.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 6. popspot-frontend/src/components/music/usePreviewPlayer.ts
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.