mirror of
https://github.com/LukeHagar/better-auth.git
synced 2025-12-07 20:37:44 +00:00
demo: add impersonation stop button and admin user configuration
This commit is contained in:
@@ -36,6 +36,7 @@ import {
|
||||
QrCode,
|
||||
ShieldCheck,
|
||||
ShieldOff,
|
||||
StopCircle,
|
||||
Trash,
|
||||
X,
|
||||
} from "lucide-react";
|
||||
@@ -447,6 +448,31 @@ export default function UserCard(props: {
|
||||
</CardContent>
|
||||
<CardFooter className="gap-2 justify-between items-center">
|
||||
<ChangePassword />
|
||||
{session?.session.impersonatedBy ? (
|
||||
<Button
|
||||
className="gap-2 z-10"
|
||||
variant="secondary"
|
||||
onClick={async () => {
|
||||
setIsSignOut(true);
|
||||
await client.admin.stopImpersonating();
|
||||
setIsSignOut(false);
|
||||
toast.info("Impersonation stopped successfully");
|
||||
router.push("/admin");
|
||||
}}
|
||||
disabled={isSignOut}
|
||||
>
|
||||
<span className="text-sm">
|
||||
{isSignOut ? (
|
||||
<Loader2 size={15} className="animate-spin" />
|
||||
) : (
|
||||
<div className="flex items-center gap-2">
|
||||
<StopCircle size={16} color="red" />
|
||||
Stop Impersonation
|
||||
</div>
|
||||
)}
|
||||
</span>
|
||||
</Button>
|
||||
) : (
|
||||
<Button
|
||||
className="gap-2 z-10"
|
||||
variant="secondary"
|
||||
@@ -474,6 +500,7 @@ export default function UserCard(props: {
|
||||
)}
|
||||
</span>
|
||||
</Button>
|
||||
)}
|
||||
</CardFooter>
|
||||
</Card>
|
||||
);
|
||||
|
||||
@@ -153,7 +153,9 @@ export const auth = betterAuth({
|
||||
passkey(),
|
||||
openAPI(),
|
||||
bearer(),
|
||||
admin(),
|
||||
admin({
|
||||
adminUserIds: ["EXD5zjob2SD6CBWcEQ6OpLRHcyoUbnaB"],
|
||||
}),
|
||||
multiSession(),
|
||||
oAuthProxy(),
|
||||
nextCookies(),
|
||||
|
||||
@@ -105,7 +105,7 @@ export const admin = <O extends AdminOptions>(options?: O) => {
|
||||
const session = await getSessionFromCtx(ctx);
|
||||
if (
|
||||
(!session?.session || !opts.adminRoles.includes(session.user.role)) &&
|
||||
!opts.adminUserIds?.includes(session?.session?.user.id)
|
||||
!opts.adminUserIds?.includes(session?.user.id || "")
|
||||
) {
|
||||
throw new APIError("UNAUTHORIZED");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user