Automatic detect of clients

This commit is contained in:
2025-07-17 06:31:50 +00:00
parent 1a6faaa104
commit 4e525e4bae
10 changed files with 367 additions and 36 deletions

View File

@@ -14,6 +14,7 @@ import {
Monitor,
MonitorDotIcon,
LogOut,
Wrench,
} from 'lucide-react';
import { ToastProvider } from './components/ToastProvider';
@@ -22,7 +23,8 @@ const sidebarItems = [
{ name: 'Termine', path: '/termine', icon: Calendar },
{ name: 'Ressourcen', path: '/ressourcen', icon: Boxes },
{ name: 'Raumgruppen', path: '/infoscr_groups', icon: MonitorDotIcon },
{ name: 'Infoscreens', path: '/Infoscreens', icon: Monitor },
{ name: 'Infoscreens', path: '/clients', icon: Monitor },
{ name: 'Erweiterungsmodus', path: '/setup', icon: Wrench },
{ name: 'Medien', path: '/medien', icon: Image },
{ name: 'Benutzer', path: '/benutzer', icon: User },
{ name: 'Einstellungen', path: '/einstellungen', icon: Settings },
@@ -119,26 +121,72 @@ const Layout: React.FC = () => {
);
};
const App: React.FC = () => (
<Router>
import { useEffect } from 'react';
import { useNavigate } from 'react-router-dom';
import { fetchClientsWithoutDescription } from './apiClients';
// ENV aus .env holen (Platzhalter, im echten Projekt über process.env oder API)
const ENV = import.meta.env.VITE_ENV || 'development';
function useLoginCheck() {
const [isLoggedIn, setIsLoggedIn] = useState(false);
useEffect(() => {
if (ENV === 'development') {
setIsLoggedIn(true); // Im Development immer eingeloggt
console.log('[Login] Development-Modus: User automatisch eingeloggt');
return;
}
// Hier echte Loginlogik einbauen (z.B. Token prüfen)
// setIsLoggedIn(...)
// console.log('[Login] Produktiv-Modus: Login-Check ausgeführt');
}, []);
return isLoggedIn;
}
const App: React.FC = () => {
const navigate = useNavigate();
const isLoggedIn = useLoginCheck();
useEffect(() => {
if (!isLoggedIn) return;
fetchClientsWithoutDescription().then(list => {
if (list.length > 0) {
console.log('[Navigation] Weiterleitung zu /clients wegen fehlender Beschreibung');
navigate('/clients');
} else {
console.log('[Navigation] Dashboard wird angezeigt, alle Clients haben Beschreibung');
}
});
}, [isLoggedIn, navigate]);
return (
<ToastProvider>
<Routes>
<Route path="/" element={<Layout />}>
<Route index element={<Dashboard />} />
<Route path="termine" element={<Appointments />} />
<Route path="ressourcen" element={<Ressourcen />} />
<Route path="Infoscreens" element={<Infoscreens />} />
<Route path="infoscr_groups" element={<Infoscreen_groups />} />
<Route path="medien" element={<Media />} />
<Route path="benutzer" element={<Benutzer />} />
<Route path="einstellungen" element={<Einstellungen />} />
<Route path="clients" element={<Infoscreens />} />
<Route path="setup" element={<SetupMode />} />
</Route>
</Routes>
</ToastProvider>
);
};
const AppWrapper: React.FC = () => (
<Router>
<App />
</Router>
);
export default App;
export default AppWrapper;
// Dummy Components (können in eigene Dateien ausgelagert werden)
import Dashboard from './dashboard';
@@ -149,3 +197,4 @@ import Infoscreen_groups from './infoscreen_groups';
import Media from './media';
import Benutzer from './benutzer';
import Einstellungen from './einstellungen';
import SetupMode from './SetupMode';