package com.guwan.Interceptor;

import com.guwan.service.TokenService;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

@Component
public class TokenInterceptor implements HandlerInterceptor {

    private final TokenService tokenService;

    // 注入自定义的 Token 处理服务
    public TokenInterceptor(TokenService tokenService) {
        this.tokenService = tokenService;
    }

    // 在控制器方法执行之前调用
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 从请求头中获取 Token
        String token = request.getHeader("Authorization");

        if (token != null) {
            // 验证 Token 的有效性
            boolean isValid = tokenService.checkToken(token);
            if (isValid) {
                // 如果 Token 有效，可能需要更新 Token 并将新的 Token 添加到响应头中
              /*  String newToken = tokenService.refreshToken(token);
                if (newToken != null) {
                    response.setHeader("Authorization", newToken);
                }*/
                return true; // Token 有效，继续处理请求
            } else {
                // 如果 Token 无效，返回未授权状态码
                response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
                return false; // 拦截请求
            }
        }

        // 如果没有 Token，返回未授权状态码
        response.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
        return false; // 拦截请求
    }
}
