package com.malk.config;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

/**
 * {@code mjava.auth.*} 配置绑定（capability: request-auth）
 */
@Data
@Component
@ConfigurationProperties(prefix = "mjava.auth")
public class AuthConfigProperties {

    /**
     * 鉴权总开关。默认 false，保障存量客户零破坏。
     */
    private boolean enabled = false;

    /**
     * HMAC 共享密钥。建议通过环境变量 AUTH_SECRET 注入。
     */
    private String secret;

    /**
     * 时间窗秒数，默认 300（5 分钟）。
     */
    private long window = 300;

    /**
     * Nonce 缓存条目上限，默认 10000。
     */
    private int nonceCacheSize = 10000;

    /**
     * 豁免路径列表（Ant 风格模式），默认常见健康/回调端点。
     */
    private List<String> exemptPaths = defaultExempt();

    private static List<String> defaultExempt() {
        List<String> list = new ArrayList<>();
        list.add("/actuator/**");
        list.add("/api/*/callback/**");
        list.add("/api/*/sso/**");
        return list;
    }
}
