Added ACLs for User Management Preventing Users from Making Changes, Only Admins

This commit is contained in:
2025-09-24 14:11:38 -06:00
parent 3d3337d1b2
commit 930a897e0b
4 changed files with 46 additions and 9 deletions

View File

@@ -1,11 +1,12 @@
import React, { useEffect, useState } from "react";
import { Paper, Box, Typography } from "@mui/material";
export default function ServerInfo() {
export default function ServerInfo({ isAdmin = false }) {
const [serverTime, setServerTime] = useState(null);
const [error, setError] = useState(null);
useEffect(() => {
if (!isAdmin) return;
let isMounted = true;
const fetchTime = async () => {
try {
@@ -23,7 +24,9 @@ export default function ServerInfo() {
fetchTime();
const id = setInterval(fetchTime, 60000); // update once per minute
return () => { isMounted = false; clearInterval(id); };
}, []);
}, [isAdmin]);
if (!isAdmin) return null;
return (
<Paper sx={{ m: 2, p: 0, bgcolor: "#1e1e1e" }} elevation={2}>

View File

@@ -68,7 +68,7 @@ async function sha512(text) {
return arr.map((b) => b.toString(16).padStart(2, "0")).join("");
}
export default function UserManagement() {
export default function UserManagement({ isAdmin = false }) {
const [rows, setRows] = useState([]); // {username, display_name, role, last_login}
const [orderBy, setOrderBy] = useState("username");
const [order, setOrder] = useState("asc");
@@ -113,7 +113,7 @@ export default function UserManagement() {
}, []);
useEffect(() => {
fetchUsers();
if (!isAdmin) return;
(async () => {
try {
const resp = await fetch("/api/auth/me", { credentials: "include" });
@@ -123,7 +123,8 @@ export default function UserManagement() {
}
} catch {}
})();
}, [fetchUsers]);
fetchUsers();
}, [fetchUsers, isAdmin]);
const handleSort = (col) => {
if (orderBy === col) setOrder(order === "asc" ? "desc" : "asc");
@@ -291,6 +292,8 @@ export default function UserManagement() {
}
};
if (!isAdmin) return null;
return (
<>
<Paper sx={tablePaperSx} elevation={2}>