package com.zioinfo.kintex.security.dto;

import com.zioinfo.kintex.auth.dto.LoginResponse;

/**
 * 2FA 로그인 1단계 응답. status:
 *  - "OK"           → OTP 미사용(관람객 등). {@code login}에 최종 토큰/워크스페이스.
 *  - "OTP_REQUIRED" → OTP 등록 사용자. {@code challengeToken}으로 /otp/verify 진행(2단계 코드).
 *  - "OTP_ENROLL"   → 필수 역할이나 OTP 미등록 → 등록 강제. {@code challengeToken}으로
 *                     /otp/enroll/setup → /otp/enroll/verify 진행 후 최종 토큰.
 * challengeToken 은 짧은 수명(5분)·1회성 프리오스(pre-auth) 토큰(정식 JWT 아님).
 */
public record SecureLoginResponse(String status, String challengeToken, LoginResponse login) {

    public static SecureLoginResponse ok(LoginResponse login) {
        return new SecureLoginResponse("OK", null, login);
    }

    public static SecureLoginResponse otpRequired(String challengeToken) {
        return new SecureLoginResponse("OTP_REQUIRED", challengeToken, null);
    }

    public static SecureLoginResponse otpEnroll(String challengeToken) {
        return new SecureLoginResponse("OTP_ENROLL", challengeToken, null);
    }
}
