Login mit Admin Admin login bis zum Dashboard

erfolgreich
This commit is contained in:
Nirodan
2025-06-14 18:57:43 +02:00
parent a3e521e458
commit 86308925ea
5 changed files with 48 additions and 9 deletions
+3 -3
View File
@@ -2,7 +2,8 @@ import { BrowserRouter, Navigate, Route, Routes } from 'react-router-dom';
//import AdminDashboard from './components/AdminDashboard';
import LoginForm from './components/LoginForm';
//import RegisterForm from './components/RegisterForm';
import Home from './components/Home';
import Md5Tool from './components/Md5Tool';
import ToolOverview from './components/ToolOverview';
function App() {
const isLoggedIn = localStorage.getItem('token') !== null;
@@ -11,12 +12,11 @@ function App() {
return (
<BrowserRouter>
<Routes>
<Route path="/" element={isLoggedIn ? <ToolsOverview /> : <Navigate to="/login" />} />
<Route path="/" element={isLoggedIn ? <ToolOverview /> : <Navigate to="/login" />} />
<Route path="/login" element={<LoginForm />} />
{/*<Route path="/register" element={<RegisterForm />} />*/}
<Route path="/tools/md5" element={isLoggedIn ? <Md5Tool /> : <Navigate to="/login" />} />
{/*<Route path="/admin" element={isLoggedIn && role === 'admin' ? <AdminDashboard /> : <Navigate to="/" />} />*/}
<Route path="/" element={<Home />} />
</Routes>
</BrowserRouter>
);
+12 -4
View File
@@ -1,4 +1,3 @@
// src/components/LoginForm.jsx
import { useState } from 'react';
import { useNavigate } from 'react-router-dom';
import axios from '../services/api';
@@ -10,7 +9,7 @@ function LoginForm() {
const login = async () => {
try {
const res = await axios.post('/login', { username, password });
const res = await axios.post('/login', { username, password }); // ruft POST /api/login auf
localStorage.setItem('token', res.data.token);
localStorage.setItem('role', res.data.role);
navigate('/');
@@ -22,8 +21,17 @@ function LoginForm() {
return (
<div>
<h2>Login</h2>
<input value={username} onChange={e => setUsername(e.target.value)} placeholder="Benutzername" />
<input type="password" value={password} onChange={e => setPassword(e.target.value)} placeholder="Passwort" />
<input
value={username}
onChange={e => setUsername(e.target.value)}
placeholder="Benutzername"
/>
<input
type="password"
value={password}
onChange={e => setPassword(e.target.value)}
placeholder="Passwort"
/>
<button onClick={login}>Anmelden</button>
</div>
);
+4 -2
View File
@@ -1,12 +1,14 @@
import axios from 'axios';
const instance = axios.create({
baseURL: import.meta.env.VITE_API_URL || 'http://localhost:5000/api',
baseURL: import.meta.env.VITE_API_URL || 'http://127.0.0.1:5000/api',
});
instance.interceptors.request.use(config => {
const token = localStorage.getItem('token');
if (token) config.headers.Authorization = `Bearer ${token}`;
if (token) {
config.headers.Authorization = `Bearer ${token}`;
}
return config;
});