import React, { useState, useEffect } from 'react';
import { Navigate } from 'react-router-dom';
import { getTokenForSetor } from '@/utils/tokenManager';

/**
 * WorkspaceGuard
 * Protege o ambiente Workspace verificando EXCLUSIVAMENTE:
 * - Token do setor "Workspace" OU
 * - Flag local "workspace-auth-ok" (fluxo via cookie/sessão)
 *
 * Importante: NÃO usa mais o token global ou tokens de outros módulos,
 * evitando que tokens do GR, Prafrot, etc. liberem acesso ao Workspace.
 */
export const WorkspaceGuard = ({ children }) => {
  const [hasAccess, setHasAccess] = useState(false);
  const [loading, setLoading] = useState(true);
  
  useEffect(() => {
    const checkAccess = async () => {
      // Token específico do setor Workspace
      const workspaceToken = await getTokenForSetor('Workspace');
      // Flag usada quando o backend autentica via cookie/sessão
      const workspaceFlag = localStorage.getItem('workspace-auth-ok') === '1';

      setHasAccess(!!workspaceToken || workspaceFlag);
      setLoading(false);
    };
    
    checkAccess();
  }, []);
  
  if (loading) {
    return null; // Poderia exibir um spinner simples aqui
  }

  if (!hasAccess) {
    return <Navigate to="/plataforma/workspace/login" replace />;
  }

  return children;
};
