package com.zioinfo.hrm.auth;

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

/**
 * HRM 운영자 계정 (hrm_users 테이블).
 * role: SUPERADMIN / MANAGER / HR_STAFF / VIEWER
 */
@Data
public class HrmUser {
    private Long id;
    private String username;
    private String passwordHash;
    private String displayName;
    private String email;
    private String role;
    private boolean active;
    private LocalDateTime createdAt;

    // UIWS 2FA 이식 컬럼 (멱등 ALTER — db/91_uiws_port.sql).
    private String emailVerifyCode;
    private LocalDateTime emailVerifyExpire;
    private Integer loginFailCount;
    private Boolean locked;
    /** TOTP 시크릿(보류/확정 공용). API 응답·로그에 절대 미노출. (db/91_uiws_port.sql ALTER) */
    private String otpSecret;
    /** OTP 등록 확정 여부(기본 false). 최초 로그인 verify 성공 시 true 로 확정(멱등). (db/93_auth_otp.sql ALTER) */
    private Boolean otpEnabled;

    // UIWS 로그인 보조기능 이식 컬럼 (멱등 ALTER — db/91_uiws_port.sql).
    // approved: 가입 신청자는 false(관리자 승인 전 로그인 차단), 기존 계정은 true 보정.
    // pwChangeYn: 임시비번 발급 시 true(다음 로그인 시 변경 유도).
    private Boolean approved;
    private Boolean pwChangeYn;
}
