Automatic detect of clients
This commit is contained in:
@@ -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';
|
||||
|
||||
Reference in New Issue
Block a user