This commit updates various dependencies in pnpm-lock file and introduces enhancements to the admin account page. This includes adding several new functionality like 'Delete User', 'Ban User', 'Impersonate User' and 'Delete Account'. Various UI components are also added for these features.
104 lines
2.7 KiB
TypeScript
104 lines
2.7 KiB
TypeScript
'use client';
|
|
|
|
import { zodResolver } from '@hookform/resolvers/zod';
|
|
import { useForm } from 'react-hook-form';
|
|
|
|
import {
|
|
AlertDialog,
|
|
AlertDialogCancel,
|
|
AlertDialogContent,
|
|
AlertDialogDescription,
|
|
AlertDialogFooter,
|
|
AlertDialogHeader,
|
|
AlertDialogTitle,
|
|
AlertDialogTrigger,
|
|
} from '@kit/ui/alert-dialog';
|
|
import { Button } from '@kit/ui/button';
|
|
import {
|
|
Form,
|
|
FormControl,
|
|
FormDescription,
|
|
FormField,
|
|
FormItem,
|
|
FormLabel,
|
|
FormMessage,
|
|
} from '@kit/ui/form';
|
|
import { Input } from '@kit/ui/input';
|
|
|
|
import { deleteUser } from '../lib/server/admin-server-actions';
|
|
import { DeleteUserSchema } from '../lib/server/schema/admin-actions.schema';
|
|
|
|
export function AdminDeleteUserDialog(
|
|
props: React.PropsWithChildren<{
|
|
userId: string;
|
|
}>,
|
|
) {
|
|
const form = useForm({
|
|
resolver: zodResolver(DeleteUserSchema),
|
|
defaultValues: {
|
|
userId: props.userId,
|
|
confirmation: '',
|
|
},
|
|
});
|
|
|
|
return (
|
|
<AlertDialog>
|
|
<AlertDialogTrigger asChild>{props.children}</AlertDialogTrigger>
|
|
|
|
<AlertDialogContent>
|
|
<AlertDialogHeader>
|
|
<AlertDialogTitle>Delete User</AlertDialogTitle>
|
|
|
|
<AlertDialogDescription>
|
|
Are you sure you want to delete this user? All the data associated
|
|
with this user will be permanently deleted. Any active subscriptions
|
|
will be canceled.
|
|
</AlertDialogDescription>
|
|
</AlertDialogHeader>
|
|
|
|
<Form {...form}>
|
|
<form
|
|
className={'flex flex-col space-y-8'}
|
|
onSubmit={form.handleSubmit(deleteUser)}
|
|
>
|
|
<FormField
|
|
name={'confirmation'}
|
|
render={({ field }) => (
|
|
<FormItem>
|
|
<FormLabel>
|
|
Type <b>CONFIRM</b> to confirm
|
|
</FormLabel>
|
|
|
|
<FormControl>
|
|
<Input
|
|
required
|
|
pattern={'CONFIRM'}
|
|
placeholder={'Type CONFIRM to confirm'}
|
|
{...field}
|
|
/>
|
|
</FormControl>
|
|
|
|
<FormDescription>
|
|
Are you sure you want to do this? This action cannot be
|
|
undone.
|
|
</FormDescription>
|
|
|
|
<FormMessage />
|
|
</FormItem>
|
|
)}
|
|
/>
|
|
|
|
<AlertDialogFooter>
|
|
<AlertDialogCancel>Cancel</AlertDialogCancel>
|
|
|
|
<Button type={'submit'} variant={'destructive'}>
|
|
Delete
|
|
</Button>
|
|
</AlertDialogFooter>
|
|
</form>
|
|
</Form>
|
|
</AlertDialogContent>
|
|
</AlertDialog>
|
|
);
|
|
}
|