"use client"; // components/header/settingsModal/SettingsModal.tsx import React, { useState, useEffect } from "react"; import ReactModal from "react-modal"; import "bootstrap-icons/font/bootstrap-icons.css"; import { RootState } from "../../../redux/store"; import { useSelector } from "react-redux"; import handleClearDatabase from "./handlers/handleClearDatabase"; import handleReboot from "./handlers/handleReboot"; import handleSetDateTime from "./handlers/handleSetDateTime"; import handleSubmit from "./handlers/handleSubmit"; import bcrypt from "bcryptjs"; import CryptoJS from "crypto-js"; import { useAdminAuth } from "./hooks/useAdminAuth"; import { useSystemSettings } from "./hooks/useSystemSettings"; import { generateKeyAndIV, generateToken } from "./utils/cryptoUtils"; ReactModal.setAppElement("#__next"); const USERS = { Admin: { username: "admin", // Gehashte Version von "admin" mit bcrypt password: "$2a$10$xpq/.tcOJN/LXfzdCcCVrenlBh2nRlM1R1ISY7dd1q2qGWC9Fyd2G", role: "Admin", }, }; function SettingModal({ showModal, onClose }) { const { isAdminLoggedIn, setAdminLoggedIn } = useAdminAuth(showModal); const { formValues, setFormValues } = useSystemSettings(showModal); const [username, setUsername] = useState(""); const [password, setPassword] = useState(""); const [error, setError] = useState(""); const [showLoginForm, setShowLoginForm] = useState(false); function handleAdminLogin(e) { e.preventDefault(); const user = USERS.Admin; bcrypt.compare(password, user.password, (err, isMatch) => { if (isMatch) { const token = generateToken(user); sessionStorage.setItem("token", token); localStorage.setItem("isAdminLoggedIn", "true"); setShowLoginForm(false); onClose(); } else { setError( "Login fehlgeschlagen. Bitte überprüfen Sie Benutzername und Passwort." ); } }); } const deviceName_Redux = useSelector( (state: RootState) => state.systemSettings.deviceName ); const mac1_Redux = useSelector( (state: RootState) => state.systemSettings.mac1 ); const ip_Redux = useSelector((state: RootState) => state.systemSettings.ip); const subnet_Redux = useSelector( (state: RootState) => state.systemSettings.subnet ); const gateway_Redux = useSelector( (state: RootState) => state.systemSettings.gateway ); const datetime_Redux = useSelector( (state: RootState) => state.systemSettings.cplInternalTimestamp ); const ntp1_Redux = useSelector( (state: RootState) => state.systemSettings.ntp1 ); const ntp2_Redux = useSelector( (state: RootState) => state.systemSettings.ntp2 ); const ntp3_Redux = useSelector( (state: RootState) => state.systemSettings.ntp3 ); const ntpTimezone_Redux = useSelector( (state: RootState) => state.systemSettings.ntpTimezone ); const active_Redux = useSelector( (state: RootState) => state.systemSettings.ntpActive ); const [name, setName] = useState(deviceName_Redux || ""); const [mac1, setMac1] = useState(mac1_Redux || ""); const [ip, setIp] = useState(ip_Redux || ""); const [subnet, setSubnet] = useState(subnet_Redux || ""); const [gateway, setGateway] = useState(gateway_Redux || ""); const [systemUhr, setSystemUhr] = useState(datetime_Redux || ""); const [ntp1, setNtp1] = useState(ntp1_Redux || ""); const [ntp2, setNtp2] = useState(ntp2_Redux || ""); const [ntp3, setNtp3] = useState(ntp3_Redux || ""); const [ntpTimezone, setNtpTimezone] = useState(ntpTimezone_Redux || ""); const [active, setActive] = useState(active_Redux || ""); const [originalValues, setOriginalValues] = useState({}); const currentValues = { name, ip, subnet, gateway, ntp1, ntp2, ntp3, ntpTimezone, active, }; const handleAdminLogout = () => { sessionStorage.removeItem("token"); // Token aus sessionStorage entfernen localStorage.setItem("isAdminLoggedIn", "false"); // Admin-Status im localStorage setzen }; return ( <> {/* Hauptinhalt oder Login-Formular */} {showLoginForm ? (

Admin Login

e.preventDefault()}>
setUsername(e.target.value)} />
setPassword(e.target.value)} />
{error &&

{error}

}
) : (

System:

setName(e.target.value)} />
setMac1(e.target.value)} disabled />
setIp(e.target.value)} />
setSubnet(e.target.value)} />
setGateway(e.target.value)} />
{/* Button für Systemzeit übernehmen */}
{/* 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 */}
)}
); } export default SettingModal;