import { useState } from "react"; import { useAuthUnified } from "@/hooks/useAuthUnified"; import { hasPermission } from "@/lib/permissions"; import { Settings, Database, Server, Bug, Cloud } from "lucide-react"; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { AlertTriangle } from "lucide-react"; // Import des composants existants import BackupManager from "./BackupManager"; import NocoDBConfig from "./NocoDBConfig"; import DatabaseDebug from "./DatabaseDebug"; import WeatherSettings from "./WeatherSettings"; export default function Utilities() { const { user } = useAuthUnified(); // Détecter l'onglet actif basé sur l'URL pour la compatibilité const [activeTab, setActiveTab] = useState(() => { const path = window.location.pathname; if (path === '/backup') return 'backups'; if (path === '/nocodb-config') return 'nocodb'; if (path === '/database-debug') return 'debug'; if (path === '/weather-settings') return 'weather'; return 'backups'; }); // Vérification des permissions pour chaque onglet const canManageBackups = hasPermission(user?.role || '', 'backups', 'manage'); const canManageNocoDB = user?.role === 'admin'; const canDebugDatabase = user?.role === 'admin'; const canManageWeather = user?.role === 'admin'; // Si l'utilisateur n'a aucune permission, afficher le message d'accès refusé if (!canManageBackups && !canManageNocoDB && !canDebugDatabase && !canManageWeather) { return (
Accès refusé Vous n'avez pas les permissions nécessaires pour accéder aux utilitaires d'administration.
); } return (
{/* Header */}

Utilitaires d'Administration

Outils de gestion et de maintenance du système

{/* Content avec onglets */}
{canManageBackups && ( Sauvegardes )} {canManageNocoDB && ( Configuration NocoDB )} {canDebugDatabase && ( Debug Base de Données )} {canManageWeather && ( Météo )} {/* Contenu des onglets */} {canManageBackups && (
)} {canManageNocoDB && (
)} {canDebugDatabase && (
)} {canManageWeather && (
)}
); }