"use client" import { useState, useEffect } from "react" import { useRouter, useSearchParams } from "next/navigation" import { Button } from "@/components/ui/button" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { Alert, AlertDescription } from "@/components/ui/alert" import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" import { CheckCircle, AlertTriangle, Lock, Eye, EyeOff } from "lucide-react" export default function ResetPasswordPage() { const router = useRouter() const searchParams = useSearchParams() const token = searchParams.get('token') const [password, setPassword] = useState("") const [confirmPassword, setConfirmPassword] = useState("") const [showPassword, setShowPassword] = useState(false) const [showConfirmPassword, setShowConfirmPassword] = useState(false) const [isLoading, setIsLoading] = useState(false) const [isValidating, setIsValidating] = useState(true) const [isValidToken, setIsValidToken] = useState(false) const [isSuccess, setIsSuccess] = useState(false) const [error, setError] = useState("") // 驗證 token 是否有效 useEffect(() => { if (!token) { setError("缺少重設 token") setIsValidating(false) return } const validateToken = async () => { try { const response = await fetch(`/api/auth/reset-password?token=${token}`) const data = await response.json() if (data.success && data.valid) { setIsValidToken(true) } else { setError(data.error || "無效或已過期的重設 token") } } catch (err) { setError("驗證 token 時發生錯誤") } finally { setIsValidating(false) } } validateToken() }, [token]) const handleSubmit = async (e: React.FormEvent) => { e.preventDefault() setError("") if (!password || !confirmPassword) { setError("請填寫所有欄位") return } if (password.length < 6) { setError("密碼長度至少需要 6 個字符") return } if (password !== confirmPassword) { setError("密碼確認不一致") return } setIsLoading(true) try { const response = await fetch('/api/auth/reset-password', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ token, password }), }) const data = await response.json() if (data.success) { setIsSuccess(true) setTimeout(() => { router.push('/') }, 3000) } else { setError(data.error || "重設密碼失敗") } } catch (err) { setError("重設密碼時發生錯誤") } finally { setIsLoading(false) } } if (isValidating) { return (
驗證重設連結中...
您的密碼已成功重設,3 秒後將自動跳轉到首頁