feat: JWT-basierte Token-Generierung und -Validierung für rollenbasierte UI-Zugriffe hinzugefügt
- `generateToken`-Funktion implementiert, um Tokens mit Benutzerrollen zu erstellen - `decodeToken` in `KueModal` hinzugefügt, um das Token zu dekodieren und den "Firmware Update"-Button für Admin-Rolle bedingt anzuzeigen - Fehlerbehandlung für ungültige Tokens in localStorage verbessert - Sicherstellung der Token-Dekodierung für Admin-Zugriffskontrolle in Entwicklungs- und Produktionsumgebung
This commit is contained in:
@@ -8,7 +8,18 @@ import handleSave from "./handlers/handleSave";
|
||||
import handleDisplayEinschalten from "./handlers/handleDisplayEinschalten";
|
||||
import handleChange from "./handlers/handleChange";
|
||||
|
||||
function decodeToken(token) {
|
||||
try {
|
||||
const payload = JSON.parse(atob(token)); // Direkt das Token decodieren
|
||||
return payload;
|
||||
} catch (error) {
|
||||
console.error("Fehler beim Dekodieren des Tokens:", error);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
function KueModal({ showModal, onClose, slot, onModulNameChange }) {
|
||||
const [isAdmin, setIsAdmin] = useState(false);
|
||||
const dispatch = useDispatch();
|
||||
const [ids, setIds] = useState(Array(32).fill("---"));
|
||||
const [bezeichnungen, setBezeichnungen] = useState(Array(32).fill("---"));
|
||||
@@ -84,6 +95,16 @@ function KueModal({ showModal, onClose, slot, onModulNameChange }) {
|
||||
}
|
||||
}, [showModal]); // nur von showModal abhängig ansonsten wird alle 10 Sekunden die Werte zurückgesetzt in Modal
|
||||
//------------------------------------------------------------------------------------------------------------
|
||||
useEffect(() => {
|
||||
const token = localStorage.getItem("token");
|
||||
if (token) {
|
||||
const decoded = decodeToken(token);
|
||||
if (decoded && decoded.role === "Admin") {
|
||||
setIsAdmin(true);
|
||||
}
|
||||
}
|
||||
}, [showModal]);
|
||||
//------------------------------------------------------------------------------------------------------------
|
||||
return (
|
||||
<ReactModal
|
||||
isOpen={showModal}
|
||||
@@ -219,6 +240,12 @@ function KueModal({ showModal, onClose, slot, onModulNameChange }) {
|
||||
</div>
|
||||
|
||||
<div className="flex justify-end bg-gray-100 p-4 rounded-b-lg">
|
||||
{/* Bedingte Anzeige der Firmware-Update-Schaltfläche */}
|
||||
{isAdmin && (
|
||||
<button className="bg-littwin-blue text-white p-2 rounded flex items-center mr-2">
|
||||
Firmware Update
|
||||
</button>
|
||||
)}
|
||||
<button
|
||||
onClick={handleDisplayEinschaltenWrapper}
|
||||
className="bg-littwin-blue text-white p-2 rounded flex items-center mr-2"
|
||||
|
||||
@@ -15,9 +15,9 @@ function Kue705FO({
|
||||
tdrLocation,
|
||||
alarmStatus,
|
||||
}) {
|
||||
console.log(
|
||||
/* console.log(
|
||||
`Rendering Kue705FO - SlotIndex: ${slotIndex}, ModulName: ${modulName}`
|
||||
);
|
||||
); */
|
||||
|
||||
const chartRef = useRef(null);
|
||||
const [zoomPlugin, setZoomPlugin] = useState(null); // Plugin-Status für Chart.js
|
||||
@@ -418,7 +418,7 @@ function Kue705FO({
|
||||
// Effekt, um Modulnamen zu aktualisieren, wenn sich der Prop ändert
|
||||
useEffect(() => {
|
||||
setCurrentModulName(modulName);
|
||||
console.log(`Modulname aktualisiert für Slot ${slotIndex}:`, modulName);
|
||||
//console.log(`Modulname aktualisiert für Slot ${slotIndex}:`, modulName);
|
||||
}, [modulName, slotIndex]);
|
||||
//---------------------------------------------------
|
||||
// Aktualisiert den Schleifenwiderstand, wenn sich der `schleifenwiderstand`-Prop ändert
|
||||
|
||||
Reference in New Issue
Block a user