diff --git a/components/Header.jsx b/components/Header.jsx index f2f8f4c..d122eef 100644 --- a/components/Header.jsx +++ b/components/Header.jsx @@ -1,4 +1,5 @@ -"use client"; // components/Header.jsx +// components/Header.jsx +"use client"; import React, { useState } from "react"; import Image from "next/image"; import { useRouter } from "next/router"; @@ -15,13 +16,6 @@ function Header() { const handleCloseSettingsModal = () => setShowSettingsModal(false); const handleLogout = () => (window.location.href = "/offline.html"); - // Funktion zur Weiterleitung zur Login-Seite abhängig von der Umgebung - const handleAdminLogin = () => { - const loginPath = - process.env.NODE_ENV === "production" ? "/login.html" : "/login"; - router.push(loginPath); - }; - return (
@@ -52,14 +46,6 @@ function Header() {
- - - {/* Weitere Inhalte wie Formular */} -
-

System:

-
-
- - setName(e.target.value)} - /> -
- -
-
+ {/* Hauptinhalt oder Login-Formular */} + {showLoginForm ? ( +
+

Admin Login

+ e.preventDefault()}> +
setMac1(e.target.value)} - disabled + value={username} + onChange={(e) => setUsername(e.target.value)} + /> +
+
+ + setPassword(e.target.value)} + /> +
+ {error &&

{error}

} + + +
+ ) : ( +
+

System:

+
+
+ + setName(e.target.value)} />
-
-
-
- - setIp(e.target.value)} - /> -
-
- - setSubnet(e.target.value)} - /> -
-
- -
-
- - setGateway(e.target.value)} - /> -
-
- - - {/* Button für Systemzeit übernehmen */} - -
- +
+
+ + setMac1(e.target.value)} + disabled + />
-
- {/* SNTP Client */} -

SNTP Client:

-
-
- - setNtp1(e.target.value)} - /> +
+
+ + setIp(e.target.value)} + /> +
+
+ + setSubnet(e.target.value)} + /> +
-
- - setNtp2(e.target.value)} - /> -
-
- - setNtp3(e.target.value)} - /> -
-
- - setNtpTimezone(e.target.value)} - /> -
-
- - setActive(e.target.value)} - /> -
-
- {/* Modal Footer */} -
- - - -
- -
- +
+
+ + setGateway(e.target.value)} + /> +
+
+ + + {/* Button für Systemzeit übernehmen */} - {/* Reboot Modal */} - -

CPL wird neu gestartet...

- {/* Spinner */} -

Bitte warten Sie 5 Sekunden...

+
+ +
+
+
+ + {/* SNTP Client */} +

SNTP Client:

+
+
+ + setNtp1(e.target.value)} + /> +
+
+ + setNtp2(e.target.value)} + /> +
+
+ + setNtp3(e.target.value)} + /> +
+
+ + setNtpTimezone(e.target.value)} + /> +
+
+ + setActive(e.target.value)} + /> +
+
+ + {/* Modal Footer */} +
+ + + + +
+ +
+ )} ); diff --git a/package-lock.json b/package-lock.json index c5bcbfb..29a4c7c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -26,6 +26,7 @@ "react-modal": "^3.16.1", "react-redux": "^9.1.2", "react-spinners": "^0.14.1", + "react-toastify": "^10.0.6", "redux": "^5.0.1", "redux-persist": "^6.0.0" }, @@ -662,6 +663,14 @@ "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "engines": { + "node": ">=6" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -1688,6 +1697,18 @@ "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/react-toastify": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-10.0.6.tgz", + "integrity": "sha512-yYjp+omCDf9lhZcrZHKbSq7YMuK0zcYkDFTzfRFgTXkTFHZ1ToxwAonzA4JI5CxA91JpjFLmwEsZEgfYfOqI1A==", + "dependencies": { + "clsx": "^2.1.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", diff --git a/package.json b/package.json index e746bbf..bbcb33a 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "react-modal": "^3.16.1", "react-redux": "^9.1.2", "react-spinners": "^0.14.1", + "react-toastify": "^10.0.6", "redux": "^5.0.1", "redux-persist": "^6.0.0" }, diff --git a/pages/login.js b/pages/login.js deleted file mode 100644 index 27ec2ac..0000000 --- a/pages/login.js +++ /dev/null @@ -1,126 +0,0 @@ -// pages/index.js - -import Image from "next/image"; -import { useState } from "react"; -import { useRouter } from "next/router"; - -const USERS = { - Admin: { username: "admin", password: "admin", role: "Admin" }, - Ismail: { username: "ismail", password: "ismail", role: "Admin" }, -}; - -function generateToken(user) { - const payload = { - username: user.username, - role: user.role, - exp: Date.now() + 5 * 60 * 1000, // Ablauf in 5 Minuten - }; - return btoa(JSON.stringify(payload)); // Verwende btoa für das Payload -} - -export default function Home() { - const router = useRouter(); - const [username, setUsername] = useState(""); - const [password, setPassword] = useState(""); - const [error, setError] = useState(""); - - const handleLogin = (e) => { - e.preventDefault(); - const user = Object.values(USERS).find( - (u) => u.username.toLowerCase() === username.toLowerCase() - ); - - if (user && user.password === password) { - const token = generateToken(user); - localStorage.setItem("token", token); - - // Überprüfen, ob es sich um die Produktionsumgebung handelt - const targetPath = - process.env.NODE_ENV === "production" - ? "/kabelueberwachung.html" - : "/kabelueberwachung"; - router.replace(targetPath); - } else { - setError("Login fehlgeschlagen"); - } - }; - - return ( -
- {/* Hintergrundbild */} -
- - {/* Overlay */} -
- -
- {/* Logo */} -
- Littwin Logo -
- - {/* Titel */} -

Willkommen

- - {/* Formular */} -
- {/* Benutzername */} -
- - setUsername(e.target.value)} - className="w-full px-2 py-1 text-sm border border-gray-300 rounded-md focus:outline-none focus:ring-1 focus:ring-blue-500 focus:border-transparent" - /> -
- - {/* Passwort */} -
- - setPassword(e.target.value)} - className="w-full px-2 py-1 text-sm border border-gray-300 rounded-md focus:outline-none focus:ring-1 focus:ring-blue-500 focus:border-transparent" - /> -
- - {/* Login Button */} - -
- {error &&

{error}

} -
-
- ); -}