import React, { useEffect, useState } from "react"; import config from "../config"; const thStyle = { padding: "0.75rem", backgroundColor: "#333", borderBottom: "1px solid #555", color: "#fff", position: "sticky", top: 0, zIndex: 1, textAlign: "center", }; const tdStyle = { padding: "0.5rem 1rem", borderBottom: "1px solid #444", textAlign: "center", color: "#fff", }; const Dashboard = () => { const [role, setRole] = useState(""); const [currentUser, setCurrentUser] = useState(""); const [users, setUsers] = useState([]); const [newRoles, setNewRoles] = useState({}); const [selectedUsers, setSelectedUsers] = useState([]); useEffect(() => { const storedRole = localStorage.getItem("role"); const storedUsername = localStorage.getItem("username"); setRole(storedRole); setCurrentUser(storedUsername); if (storedRole === "SUPER") { fetchUsers(); } }, []); const fetchUsers = async () => { const token = localStorage.getItem("token"); try { const res = await fetch(`${config.apiBaseUrl}/api/Auth/users`, { headers: { Authorization: `Bearer ${token}`, }, }); if (!res.ok) throw new Error("Failed to fetch users"); const data = await res.json(); setUsers(data); } catch (err) { console.error("Error fetching users:", err); } }; const handleRoleChange = (username, value) => { setNewRoles({ ...newRoles, [username]: value }); }; const updateUserRole = async (username) => { const token = localStorage.getItem("token"); const newRole = newRoles[username]; try { const res = await fetch(`${config.apiBaseUrl}/api/Auth/role`, { method: "POST", headers: { "Content-Type": "application/json", Authorization: `Bearer ${token}`, }, body: JSON.stringify({ username, newRole }), }); if (!res.ok) throw new Error("Failed to update role"); fetchUsers(); } catch (err) { console.error("Error updating role:", err); } }; const deleteUser = async (username) => { if (!window.confirm(`Are you sure you want to delete ${username}?`)) return; const token = localStorage.getItem("token"); try { const res = await fetch(`${config.apiBaseUrl}/api/User?username=${encodeURIComponent(username)}`, { method: "DELETE", headers: { Authorization: `Bearer ${token}`, }, }); if (!res.ok) throw new Error("Failed to delete user"); fetchUsers(); } catch (err) { console.error("Error deleting user:", err); } }; const toggleUserSelection = (username) => { setSelectedUsers((prev) => prev.includes(username) ? prev.filter((u) => u !== username) : [...prev, username] ); }; return (

Dashboard

Welcome! You are logged in.

{role === "SUPER" && ( <>

You are SUPER

{selectedUsers.length > 0 && } {users .filter((user) => user.username !== currentUser) .map((user) => { const isSelected = selectedUsers.includes(user.username); const currentNewRole = newRoles[user.username] ?? user.role; return ( {selectedUsers.length > 0 && ( )} ); })}
Username RoleAction
toggleUserSelection(user.username)} /> {user.username} {isSelected ? ( ) : ( user.role )} {isSelected && (
)}
)}
); }; export default Dashboard;