- 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:
@@ -11,6 +11,7 @@
|
||||
<result property="email" column="email"/>
|
||||
<result property="provider" column="provider"/>
|
||||
<result property="providerId" column="provider_id"/>
|
||||
<result property="googleId" column="google_id"/>
|
||||
<result property="role" column="role"/>
|
||||
<result property="status" column="status"/>
|
||||
<result property="createdAt" column="created_at"/>
|
||||
@@ -18,7 +19,7 @@
|
||||
</resultMap>
|
||||
|
||||
<sql id="columns">
|
||||
id, login_id, password, name, email, provider, provider_id, role, status, created_at, updated_at
|
||||
id, login_id, password, name, email, provider, provider_id, google_id, role, status, created_at, updated_at
|
||||
</sql>
|
||||
|
||||
<select id="findById" parameterType="long" resultMap="memberResultMap">
|
||||
@@ -39,15 +40,34 @@
|
||||
WHERE provider = #{provider} AND provider_id = #{providerId}
|
||||
</select>
|
||||
|
||||
<!-- 구글 sub 로 회원 조회 (연결된 LOCAL 계정 + 순수 구글 계정 모두 google_id 로 찾음) -->
|
||||
<select id="findByGoogleId" parameterType="string" resultMap="memberResultMap">
|
||||
SELECT <include refid="columns"/> FROM member WHERE google_id = #{googleId}
|
||||
</select>
|
||||
|
||||
<!-- 구글 로그인 시 같은 이메일의 기존 계정 1건(연결 대상). LOCAL 계정 우선. -->
|
||||
<select id="findByEmailForLink" parameterType="string" resultMap="memberResultMap">
|
||||
SELECT <include refid="columns"/>
|
||||
FROM member
|
||||
WHERE email = #{email} AND status = 'ACTIVE' AND google_id IS NULL
|
||||
ORDER BY (provider = 'LOCAL') DESC, id ASC
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
<!-- 기존 계정에 구글 연결 (provider 는 그대로 유지) -->
|
||||
<update id="linkGoogle">
|
||||
UPDATE member SET google_id = #{googleId}, updated_at = NOW() WHERE id = #{id}
|
||||
</update>
|
||||
|
||||
<select id="countByLoginId" parameterType="string" resultType="int">
|
||||
SELECT COUNT(*) FROM member WHERE login_id = #{loginId}
|
||||
</select>
|
||||
|
||||
<insert id="insert" parameterType="com.sb.web.auth.domain.Member"
|
||||
useGeneratedKeys="true" keyProperty="id">
|
||||
INSERT INTO member (login_id, password, name, email, provider, provider_id, role, status, created_at, updated_at)
|
||||
INSERT INTO member (login_id, password, name, email, provider, provider_id, google_id, role, status, created_at, updated_at)
|
||||
VALUES (#{loginId}, #{password}, #{name}, #{email},
|
||||
#{provider}, #{providerId}, #{role}, #{status}, NOW(), NOW())
|
||||
#{provider}, #{providerId}, #{googleId}, #{role}, #{status}, NOW(), NOW())
|
||||
</insert>
|
||||
|
||||
<update id="updatePassword">
|
||||
|
||||
Reference in New Issue
Block a user