🛠 1️⃣ Was wurde erfolgreich ausgelagert?
✔ cryptoUtils.ts → Enthält generateKeyAndIV und generateTokencryptoUtils
✔ useAdminAuth.ts → Enthält decryptToken, useEffect für Login-Status und logoutAdminuseAdminAuth
✔ useSystemSettings.ts → Verwaltet Redux-Daten und setzt formValuesuseSystemSettings
✔ handleAdminLogin.ts → Enthält handleAdminLogin, um die Login-Logik auszulagernhandleAdminLogin
✔ handleClearDatabase.ts → Handhabt das Löschen der DatenbankhandleClearDatabase
✔ handleReboot.ts → Handhabt den Reboot des CPLhandleReboot
✔ handleSetDateTime.ts → Setzt Datum und Uhrzeit für das SystemhandleSetDateTime
✔ handleSubmit.ts → Verarbeitet Änderungen und sendet sie an den ServerhandleSubmit
✔ users.ts → Enthält die USERS-Konfiguration für den Adminusers
🚀 Das bedeutet:
SettingsModal.tsx ist jetzt nur noch für die UI zuständig.
Alle Geschäftslogik (State, API-Aufrufe, Funktionen) wurde sauber in separate Dateien ausgelagert.
Der Code ist jetzt wartungsfreundlicher und wiederverwendbarer.
This commit is contained in:
@@ -13,20 +13,14 @@ import CryptoJS from "crypto-js";
|
||||
import { useAdminAuth } from "./hooks/useAdminAuth";
|
||||
import { useSystemSettings } from "./hooks/useSystemSettings";
|
||||
import { generateKeyAndIV, generateToken } from "./utils/cryptoUtils";
|
||||
import USERS from "./config/users";
|
||||
import handleAdminLogin from "./handlers/handleAdminLogin";
|
||||
|
||||
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 { isAdminLoggedIn, logoutAdmin } = useAdminAuth(showModal);
|
||||
|
||||
const { formValues, setFormValues } = useSystemSettings(showModal);
|
||||
|
||||
const [username, setUsername] = useState("");
|
||||
@@ -34,24 +28,6 @@ function SettingModal({ showModal, onClose }) {
|
||||
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
|
||||
);
|
||||
@@ -108,10 +84,6 @@ function SettingModal({ showModal, onClose }) {
|
||||
ntpTimezone,
|
||||
active,
|
||||
};
|
||||
const handleAdminLogout = () => {
|
||||
sessionStorage.removeItem("token"); // Token aus sessionStorage entfernen
|
||||
localStorage.setItem("isAdminLoggedIn", "false"); // Admin-Status im localStorage setzen
|
||||
};
|
||||
|
||||
return (
|
||||
<>
|
||||
|
||||
Reference in New Issue
Block a user