pelagia-portal/App/app/(portal)/admin/users/grant-superuser-button.tsx
2026-05-18 23:18:58 +05:30

36 lines
1.1 KiB
TypeScript

"use client";
import { useState } from "react";
import { useRouter } from "next/navigation";
import { grantSuperUser } from "../superuser-requests/actions";
import { ShieldCheck } from "lucide-react";
export function GrantSuperUserButton({ userId }: { userId: string }) {
const router = useRouter();
const [pending, setPending] = useState(false);
const [error, setError] = useState("");
async function handle() {
if (!confirm("Grant this user SuperUser access?")) return;
setPending(true);
setError("");
const result = await grantSuperUser(userId);
setPending(false);
if ("error" in result) setError(result.error);
else router.refresh();
}
return (
<span title={error || undefined}>
<button
onClick={handle}
disabled={pending}
title="Grant SuperUser access"
className="inline-flex items-center gap-1 rounded border border-primary-200 bg-primary-50 px-2 py-1 text-xs font-medium text-primary-700 hover:bg-primary-100 disabled:opacity-50 transition-colors"
>
<ShieldCheck className="h-3 w-3" />
{pending ? "…" : "SuperUser"}
</button>
</span>
);
}