package com.yami.shop.security.admin.adapter;

import com.yami.shop.security.common.adapter.DefaultAuthConfigAdapter;
import org.springframework.stereotype.Component;

import java.util.Arrays;
import java.util.List;

/**
 * ResourceServerAdapter 类是一个组件，它继承自 DefaultAuthConfigAdapter。
 * 该类的主要作用是配置资源服务器的一些认证相关的信息，特别是排除某些路径的认证需求。
 * 此类使用了 Spring 的 @Component 注解，以便被 Spring 容器自动扫描并作为一个 Bean 进行管理。
 * 
 * @author 菠萝凤梨
 * @date 2022/3/28 14:57
 */
@Component
public class ResourceServerAdapter extends DefaultAuthConfigAdapter {

    /**
     * EXCLUDE_PATH 是一个静态的 List 集合，存储了一些不需要进行认证的路径列表。
     * 这些路径包含了常见的资源路径，如：
     * - /webjars/**：WebJars 相关资源，通常用于管理前端依赖库。
     * - /swagger/**：Swagger 相关资源，用于 API 文档的展示和调试。
     * - /v3/api-docs/**：Swagger 的 API 文档的 JSON 数据路径。
     * - /doc.html：Swagger 的文档页面。
     * - /swagger-ui.html：Swagger 的 UI 页面。
     * - /swagger-resources/**：Swagger 的资源路径。
     * - /captcha/**：可能是验证码相关的资源路径。
     * - /adminLogin：可能是管理员登录页面的路径。
     * - /mall4j/img/**：可能是 mall4j 项目中的图片资源路径。
     */
    public static final List<String> EXCLUDE_PATH = Arrays.asList(
            "/webjars/**",
            "/swagger/**",
            "/v3/api-docs/**",
            "/doc.html",
            "/swagger-ui.html",
            "/swagger-resources/**",
            "/captcha/**",
            "/adminLogin",
            "/mall4j/img/**");

    /**
     * 重写了父类的 excludePathPatterns 方法。
     * 此方法用于返回那些需要排除认证的路径列表，确保在访问这些路径时，
     * 不需要进行用户认证操作，以便外部用户可以直接访问这些资源。
     * 
     * @return 存储排除认证路径的 List 集合
     */
    @Override
    public List<String> excludePathPatterns() {
        return EXCLUDE_PATH;
    }
}
