42 lines
1.6 KiB
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;
|
|
}
|