guardia-signage/backend/src/main/java/com/zioinfo/signage/auth/SignageUser.java

42 lines
1.6 KiB
Java

package com.zioinfo.signage.auth;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class SignageUser {
private Long id;
private String tenantCode;
private String username;
@JsonIgnore
private String passwordHash; // API 응답 미노출
private String role; // ADMIN, MANAGER, USER
private String email;
private String phone;
private boolean active;
// ── 로그인 보조 이식 컬럼 (signage_user ALTER, db/93_signage_login_helper.sql) ─────────
/** 이름(아이디찾기/비번초기화 매칭 키). */
private String name;
/** 가입 승인 상태(APPROVED / PENDING). 신규 가입은 PENDING(승인대기). */
private String approvalStatus;
private LocalDateTime lastLoginAt;
private LocalDateTime createdAt;
// ── UIWS 2FA 이식 컬럼 (signage_user ALTER, db/91_uiws_port.sql) ─────────────────
/** 이메일 인증코드(6자리). 발급 후 verify 단계에서 검증. API 응답에는 절대 미포함. */
@JsonIgnore
private String emailVerifyCode;
/** 인증코드 만료시각. */
@JsonIgnore
private LocalDateTime emailVerifyExpire;
/** 로그인 실패 누적 횟수(기본 0). max-login-fail 도달 시 locked. */
private Integer loginFailCount;
/** 계정 잠금 여부(기본 false). */
private Boolean locked;
/** TOTP 시크릿(UIWS OTP 경로 대비, 현재 이메일 흐름에서는 미사용). */
@JsonIgnore
private String otpSecret;
}