/*
 * @Author: code4eat awesomedema@gmail.com
 * @Date: 2025-06-25 14:33:01
 * @LastEditors: code4eat awesomedema@gmail.com
 * @LastEditTime: 2025-06-25 15:04:22
 * @FilePath: /bi2025/src/hooks/useAuth.ts
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */
import { useState, useEffect } from 'react';
import { apiPost } from '../utils/request';

interface AuthResult {
  isAuthenticated: boolean;
  isLoading: boolean;
  error: string | null;
}

export const useAuth = (): AuthResult => {
  const [isAuthenticated, setIsAuthenticated] = useState<boolean>(false);
  const [isLoading, setIsLoading] = useState<boolean>(true);
  const [error, setError] = useState<string | null>(null);

  useEffect(() => {
    const checkAuth = async () => {
      try {
        setIsLoading(true);
        setError(null);
        
        // 检查是否为开发模式跳过鉴权
        const isDev = import.meta.env.DEV;
        const skipAuth = new URLSearchParams(window.location.search).get('skipAuth') === 'true';
        
        // 开发模式下可以通过URL参数或者直接跳过
        if (isDev && (skipAuth || import.meta.env.VITE_SKIP_AUTH === 'true')) {
          console.log('开发模式跳过鉴权验证');
          setIsAuthenticated(true);
          return;
        }
        
        const response = await apiPost('/checkKeygen');
        
        // 检查响应状态 - 根据新的接口格式
        if (response.data && response.data.status === 200 && (!response.data.msg || response.data.msg === '')) {
          setIsAuthenticated(true);
        } else {
          setIsAuthenticated(false);
          // 使用接口返回的错误消息，如果有的话
          const errorMsg = response.data?.msg || '权限验证失败';
          setError(errorMsg);
        }
      } catch (error: any) {
        console.error('权限验证失败:', error);
        // 网络错误或接口异常都认为是无权限访问
        setIsAuthenticated(false);
        setError(error.message || '权限验证失败');
      } finally {
        setIsLoading(false);
      }
    };

    checkAuth();
  }, []);

  return { isAuthenticated, isLoading, error };
}; 