6256d3e63d
CI / build (push) Failing after 13m40s
- member.plan(FREE/PREMIUM) 컬럼 추가 + SessionUser/MemberResponse 노출
- auth_session 백업에 plan 저장(세션 복원 시 유료 상태 유지)
- 관리자 회원 plan 변경 API (PUT /api/admin/members/{id}/plan)
- PremiumInterceptor 로 유료 전용 경로 차단(통계/예산/고정지출/태그/OCR/투자/카드알림/백업)
· 관리자는 플랜과 무관하게 허용, 무료 회원은 403 PREMIUM_REQUIRED
- WebConfigTest: 유료 경로 등록 회귀 가드 추가
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
39 lines
1.4 KiB
XML
39 lines
1.4 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
|
<mapper namespace="com.sb.web.auth.mapper.AuthSessionMapper">
|
|
|
|
<insert id="insert" parameterType="com.sb.web.auth.domain.AuthSession">
|
|
INSERT INTO auth_session
|
|
(token, member_id, login_id, name, role, plan, provider, remember_me, expires_at, created_at)
|
|
VALUES
|
|
(#{token}, #{memberId}, #{loginId}, #{name}, #{role}, #{plan}, #{provider},
|
|
#{rememberMe}, #{expiresAt}, NOW())
|
|
ON DUPLICATE KEY UPDATE
|
|
expires_at = #{expiresAt}
|
|
</insert>
|
|
|
|
<select id="findByToken" resultType="com.sb.web.auth.domain.AuthSession">
|
|
SELECT token, member_id, login_id, name, role, plan, provider, remember_me, expires_at, created_at
|
|
FROM auth_session
|
|
WHERE token = #{token}
|
|
</select>
|
|
|
|
<update id="updateExpiry">
|
|
UPDATE auth_session SET expires_at = #{expiresAt} WHERE token = #{token}
|
|
</update>
|
|
|
|
<update id="updateName">
|
|
UPDATE auth_session SET name = #{name} WHERE token = #{token}
|
|
</update>
|
|
|
|
<delete id="delete">
|
|
DELETE FROM auth_session WHERE token = #{token}
|
|
</delete>
|
|
|
|
<delete id="deleteExpired">
|
|
DELETE FROM auth_session WHERE expires_at < #{now}
|
|
</delete>
|
|
|
|
</mapper>
|