feat: Token in SessionStorage gespeichert und Passwort gehasht

- Admin-Token wird nun in SessionStorage anstelle von LocalStorage gespeichert.
- Passwort für Admin-Benutzer ist jetzt mit bcrypt gehasht.
- Verbesserte Sicherheit durch die Verwendung von SessionStorage (Daten werden beim Schließen des Tabs gelöscht).
- Anpassung von Funktionen zur Token-Verwaltung für SessionStorage.
This commit is contained in:
ISA
2024-11-17 13:46:09 +01:00
parent 140444d046
commit 92d1310bca

View File

@@ -11,12 +11,16 @@ import handleSubmit from "./handlers/handleSubmit";
import { useRouter } from "next/router";
import { setAdminLoggedIn } from "../../../store/authSlice";
import { useDispatch } from "react-redux";
import bcrypt from "bcryptjs";
ReactModal.setAppElement("#__next");
const USERS = {
Admin: { username: "admin", password: "admin", role: "Admin" },
Ismail: { username: "ismail", password: "ismail", role: "Admin" },
Admin: {
username: "admin",
// Gehashte Version von "admin" mit bcrypt
password: "$2a$10$xpq/.tcOJN/LXfzdCcCVrenlBh2nRlM1R1ISY7dd1q2qGWC9Fyd2G",
role: "Admin",
},
};
// Function to generate JWT token
function generateToken(user) {
@@ -38,24 +42,23 @@ function SettingModal({ showModal, onClose }) {
const [showLoginForm, setShowLoginForm] = useState(false); // Zustand für Login-Formular
const router = useRouter();
const handleAdminLogin = (e) => {
function handleAdminLogin(e) {
e.preventDefault();
const user = Object.values(USERS).find(
(u) => u.username === username && u.password === password
);
if (user) {
const token = generateToken(user);
localStorage.setItem("token", token);
dispatch(setAdminLoggedIn(true));
setShowLoginForm(false);
onClose();
} else {
setError(
"Login fehlgeschlagen. Bitte überprüfen Sie Benutzername und Passwort."
);
}
};
const user = USERS.Admin; // Finde den Admin-Benutzer
bcrypt.compare(password, user.password, (err, isMatch) => {
if (isMatch) {
const token = generateToken(user);
sessionStorage.setItem("token", token); // Speichere Token in SessionStorage
dispatch(setAdminLoggedIn(true));
setShowLoginForm(false);
onClose();
} else {
setError(
"Login fehlgeschlagen. Bitte überprüfen Sie Benutzername und Passwort."
);
}
});
}
const deviceName_Redux = useSelector((state) => state.variables.deviceName);
const mac1_Redux = useSelector((state) => state.variables.mac1);
const ip_Redux = useSelector((state) => state.variables.ip);