'use client'; import { SeparatorProps } from "@radix-ui/react-separator"; import { Button } from "@/components/ui/button" import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from "@/components/ui/dialog" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { FC } from "react"; import { DialogProps } from "@radix-ui/react-dialog"; import { toast } from "sonner"; import { UserApi } from "@/lib/api"; import { ApiError } from "next/dist/server/api-utils"; export default function SetPassword({ onOpenChange, ...props }: React.ComponentProps>) { async function handleSetPassword(password: string) { if (! /^(?=.*[a-zA-Z])(?=.*\d)[a-zA-Z\d!@#$%^&*()_+\-=\[\]{};:'",.<>/?]{6,32}$/.test(password)) { toast.error('新密码不符合规范,请重新输入'); return; } try { await UserApi.updatePassword(password); toast.success('新密码设置成功'); onOpenChange?.(false); } catch (error) { toast.error((error as ApiError).message || '新密码设置失败'); } } return ( 修改密码 新密码长度在6-32位之间,且至少包含一个字母和一个数字,可以包含特殊字符
{ e.preventDefault(); const formData = new FormData(e.currentTarget); const password = formData.get('password') as string; handleSetPassword(password); }}>
) }