package shop.alien.util.encryption.properties;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Component;

/**
 * 加解密配置属性
 */
@Data
@RefreshScope
@ConfigurationProperties(prefix = "alien.encrypt")
public class EncryptProperties {

    /**
     * 是否开启全局加解密（总开关）
     */
    private boolean enabled = true;

    /**
     * 是否开启 API 接口加解密（请求体、响应体、参数）
     */
    private boolean apiEnabled = true;

    /**
     * 是否开启数据库字段加解密
     */
    private boolean dbEnabled = true;

    /**
     * 判断 API 加密是否生效
     */
    public boolean isApiEnabled() {
        return enabled && apiEnabled;
    }

    /**
     * 判断数据库加密是否生效
     */
    public boolean isDbEnabled() {
        return enabled && dbEnabled;
    }

    /**
     * AES 密钥 (16位)
     */
    private String key;

    /**
     * AES IV (16位)
     */
    private String iv;
    /**
     * 排除解密的路径集合（支持 AntPath 格式，如 /api/v1/user/**）
     */
    private java.util.List<String> excludePaths = new java.util.ArrayList<>();
}
