- 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>
40 lines
1.1 KiB
Java
40 lines
1.1 KiB
Java
package com.sb.web.auth.dto;
|
|
|
|
import com.sb.web.auth.domain.Member;
|
|
import lombok.Builder;
|
|
import lombok.Data;
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
/**
|
|
* 관리자용 회원 정보 응답 (비밀번호 제외).
|
|
*/
|
|
@Data
|
|
@Builder
|
|
public class MemberAdminResponse {
|
|
|
|
private Long id;
|
|
private String loginId;
|
|
private String name;
|
|
private String email;
|
|
private String role; // USER / ADMIN
|
|
private String plan; // FREE / PREMIUM
|
|
private String status; // ACTIVE / SUSPENDED / WITHDRAWN
|
|
private String provider; // LOCAL / 소셜
|
|
private LocalDateTime createdAt;
|
|
|
|
public static MemberAdminResponse from(Member m) {
|
|
return MemberAdminResponse.builder()
|
|
.id(m.getId())
|
|
.loginId(m.getLoginId())
|
|
.name(m.getName())
|
|
.email(m.getEmail())
|
|
.role(m.getRole())
|
|
.plan(m.getPlan())
|
|
.status(m.getStatus())
|
|
.provider(m.getProvider())
|
|
.createdAt(m.getCreatedAt())
|
|
.build();
|
|
}
|
|
}
|