Files
overlord/Overlord-Server/public/assets/nav/role-ui.js
T

90 lines
2.0 KiB
JavaScript
Raw Normal View History

2026-03-05 00:04:26 -06:00
export function applyUserRoleUI(user, refs) {
const {
usernameDisplay,
roleBadge,
usersLink,
buildLink,
2026-04-05 18:18:40 -05:00
solPublishLink,
2026-03-05 00:04:26 -06:00
pluginsLink,
scriptsLink,
logsLink,
2026-03-12 21:26:53 -05:00
notificationsLink,
2026-03-20 22:38:17 -05:00
enrollmentLink,
2026-04-08 10:33:22 -05:00
fileShareLink,
2026-03-05 00:04:26 -06:00
} = refs;
if (!user || !usernameDisplay || !roleBadge) return;
usernameDisplay.textContent = user.username || "unknown";
const roleBadges = {
admin: '<i class="fa-solid fa-crown mr-1"></i>Admin',
operator: '<i class="fa-solid fa-sliders mr-1"></i>Operator',
viewer: '<i class="fa-solid fa-eye mr-1"></i>Viewer',
};
if (roleBadges[user.role]) {
roleBadge.innerHTML = roleBadges[user.role];
} else {
roleBadge.textContent = user.role || "user";
}
roleBadge.classList.remove(
"bg-purple-900/50",
"text-purple-300",
"border",
"border-purple-800",
"bg-blue-900/50",
"text-blue-300",
"border-blue-800",
"bg-slate-700",
"text-slate-300",
"border-slate-600",
);
if (user.role === "admin") {
roleBadge.classList.add(
"bg-purple-900/50",
"text-purple-300",
"border",
"border-purple-800",
);
} else if (user.role === "operator") {
roleBadge.classList.add(
"bg-blue-900/50",
"text-blue-300",
"border",
"border-blue-800",
);
} else {
roleBadge.classList.add(
"bg-slate-700",
"text-slate-300",
"border",
"border-slate-600",
);
}
2026-04-15 17:36:00 +01:00
// Helper: unhide an element by ID in both topbar and sidebar
const unhide = (id) => {
const el = document.getElementById(id);
if (el) el.classList.remove("hidden");
};
2026-03-05 00:04:26 -06:00
if (user.role === "admin") {
2026-04-15 17:36:00 +01:00
unhide("users-link");
unhide("plugins-link");
unhide("logs-link");
unhide("sol-publish-link");
2026-03-05 00:04:26 -06:00
}
if (user.role === "admin" || user.role === "operator") {
2026-04-15 17:36:00 +01:00
unhide("build-link");
unhide("notifications-link");
unhide("enrollment-link");
2026-03-05 00:04:26 -06:00
}
if (user.role !== "viewer") {
2026-04-15 17:36:00 +01:00
unhide("scripts-link");
unhide("file-share-link");
2026-03-05 00:04:26 -06:00
}
}