Files
ixabatasha/src/pages/registry/admin.astro
2025-02-25 09:59:25 -06:00

48 lines
1.4 KiB
Plaintext

---
import AdminLayout from "../../layouts/AdminLayout.astro";
import RegistryManager from "../../components/RegistryManager.tsx";
import SignIn from "../../components/SignIn.tsx";
import SignOut from "../../components/SignOut.tsx";
---
<AdminLayout title="Registry Manager">
<div class="flex flex-col gap-4">
<div class="text-center text-4xl">Registry Manager</div>
<div id="auth-container">
<SignIn client:load onSuccess={() => {}} requiredRole="admin" />
</div>
<div id="manager-container" class="hidden">
<RegistryManager client:load />
<div class="flex flex-row gap-2 justify-center items-center mt-4">
<a class="btn btn-primary" href="/">Back to Home</a>
<SignOut client:load />
</div>
</div>
</div>
</AdminLayout>
<script>
import { hasRole } from "../../utils/auth-client";
function updateVisibility() {
const authContainer = document.getElementById("auth-container");
const managerContainer = document.getElementById("manager-container");
if (hasRole("admin")) {
authContainer?.classList.add("hidden");
managerContainer?.classList.remove("hidden");
} else {
authContainer?.classList.remove("hidden");
managerContainer?.classList.add("hidden");
}
}
// Check auth state on page load
updateVisibility();
// Add event listener for custom event from SignIn component
document.addEventListener("auth-success", updateVisibility);
</script>