package com.zioinfo.mall.auth;

import lombok.Data;
import java.time.LocalDateTime;

/** 계정 (mall_account). 역할: ADMIN/MANAGER(운영) · USER(고객). */
@Data
public class MallUser {
    private Long id;
    private String username;
    private String passwordHash;
    private String role;
    private String displayName;
    private boolean active;
    private LocalDateTime createdAt;

    // ── UIWS 2FA 이식 컬럼 (mall_account ALTER, db/91_uiws_port.sql) ───────────────
    //    2FA는 운영(ADMIN/MANAGER) 로그인에만 적용 — 고객(USER) 쇼핑 로그인은 회귀 0.
    /** 2FA 발송 대상 이메일(원본 mall_account 미보유 → 91_uiws_port.sql 에서 추가). */
    private String email;
    /** 이메일 인증코드(6자리). 발급 후 verify 단계에서 검증. API 응답에는 절대 미포함. */
    private String emailVerifyCode;
    /** 인증코드 만료시각. */
    private LocalDateTime emailVerifyExpire;
    /** 로그인 실패 누적 횟수(기본 0). max-login-fail 도달 시 locked. */
    private Integer loginFailCount;
    /** 계정 잠금 여부(기본 false). */
    private Boolean locked;
    /** TOTP 시크릿(UIWS OTP 경로 대비, 현재 이메일 흐름에서는 미사용). */
    private String otpSecret;
}
