feat: 구글 로그인 — 같은 이메일이면 기존 계정에 자동 연결

- member.google_id 컬럼 추가(멱등 ALTER) + 기존 GOOGLE 계정 sub 백필
- googleLogin: google_id 조회 → 없으면 검증된 동일 이메일 계정(LOCAL 우선)에
  연결 → 그래도 없으면 신규 생성. provider 는 유지(아이디 로그인/프로필 편집 보존)
- MemberMapper: findByGoogleId/findByEmailForLink/linkGoogle 추가, google_id 매핑

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
ByungCheol
2026-06-27 19:01:57 +09:00
co-authored by Claude Opus 4.8
parent 09efd65fa9
commit b48d8c667c
5 changed files with 62 additions and 6 deletions
@@ -23,8 +23,9 @@ public class Member implements Serializable {
private String password; // BCrypt 해시 (소셜 전용은 null)
private String name;
private String email;
private String provider; // LOCAL / NAVER
private String provider; // LOCAL / NAVER / GOOGLE
private String providerId; // 소셜 제공자 측 고유 ID
private String googleId; // 구글 sub (계정 연결용 — LOCAL 계정에 구글을 연결해도 provider 는 유지)
private String role; // USER / ADMIN
private String status; // ACTIVE / SUSPENDED / WITHDRAWN
private LocalDateTime createdAt;