diff --git a/src/pages/Dashboard.jsx b/src/pages/Dashboard.jsx
index 131d0fc..4251e9a 100644
--- a/src/pages/Dashboard.jsx
+++ b/src/pages/Dashboard.jsx
@@ -21,15 +21,18 @@ const tdStyle = {
const Dashboard = () => {
const [role, setRole] = useState("");
+ const [currentUser, setCurrentUser] = useState("");
const [users, setUsers] = useState([]);
const [newRoles, setNewRoles] = useState({});
const [selectedUsers, setSelectedUsers] = useState([]);
useEffect(() => {
- const currentRole = localStorage.getItem("role");
- setRole(currentRole);
+ const storedRole = localStorage.getItem("role");
+ const storedUsername = localStorage.getItem("username");
+ setRole(storedRole);
+ setCurrentUser(storedUsername);
- if (currentRole === "SUPER") {
+ if (storedRole === "SUPER") {
fetchUsers();
}
}, []);
@@ -79,6 +82,27 @@ const Dashboard = () => {
}
};
+ 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)
@@ -112,70 +136,95 @@ const Dashboard = () => {
- {users.map((user) => {
- const isSelected = selectedUsers.includes(user.username);
- const currentNewRole =
- newRoles[user.username] ?? user.role;
+ {users
+ .filter((user) => user.username !== currentUser)
+ .map((user) => {
+ const isSelected = selectedUsers.includes(user.username);
+ const currentNewRole = newRoles[user.username] ?? user.role;
- return (
-
- |
- toggleUserSelection(user.username)}
- />
- |
- {user.username} |
-
- {isSelected ? (
-
- ) : (
- user.role
- )}
- |
- {selectedUsers.length > 0 && (
+ return (
+
|
- {isSelected && (
- |
+ {user.username} |
+
+ {isSelected ? (
+
+ ) : (
+ user.role
)}
|
- )}
-
- );
- })}
+ {selectedUsers.length > 0 && (
+
+ {isSelected && (
+
+
+
+
+ )}
+ |
+ )}
+
+ );
+ })}
diff --git a/src/pages/Login.jsx b/src/pages/Login.jsx
index 7e0e607..b815f4c 100644
--- a/src/pages/Login.jsx
+++ b/src/pages/Login.jsx
@@ -86,6 +86,7 @@ const Login = () => {
localStorage.setItem("token", data.accessToken);
localStorage.setItem("role", data.role);
+ localStorage.setItem("username", data.username);
navigate("/dashboard");
} catch (err) {
diff --git a/src/pages/Register.jsx b/src/pages/Register.jsx
index 87264ca..211d1c2 100644
--- a/src/pages/Register.jsx
+++ b/src/pages/Register.jsx
@@ -108,6 +108,7 @@ const Register = () => {
localStorage.setItem("token", loginData.accessToken);
localStorage.setItem("role", loginData.role);
+ localStorage.setItem("username", data.username);
navigate("/dashboard");
} catch (err) {