import { NextRequest, NextResponse } from 'next/server' import { UserService } from '@/lib/services/database-service' import { PasswordResetService } from '@/lib/services/password-reset-service' import { v4 as uuidv4 } from 'uuid' const userService = new UserService() export async function POST(request: NextRequest) { try { const { email } = await request.json() if (!email) { return NextResponse.json( { error: '請提供電子郵件地址' }, { status: 400 } ) } // 檢查用戶是否存在 const user = await userService.findByEmail(email) if (!user) { return NextResponse.json( { error: '該電子郵件地址不存在於我們的系統中' }, { status: 404 } ) } // 撤銷用戶現有的重設 tokens await PasswordResetService.revokeUserTokens(user.id) // 創建新的重設 token const resetToken = await PasswordResetService.createResetToken(user.id) // 生成一次性註冊連結 const baseUrl = process.env.NEXT_PUBLIC_APP_URL || 'http://localhost:3000' const resetUrl = `${baseUrl}/register?token=${resetToken.token}&email=${encodeURIComponent(user.email)}&mode=reset&name=${encodeURIComponent(user.name)}&department=${encodeURIComponent(user.department)}&role=${encodeURIComponent(user.role)}` return NextResponse.json({ success: true, message: '已生成密碼重設連結', resetUrl: resetUrl, expiresAt: resetToken.expires_at }) } catch (error) { console.error('忘記密碼錯誤:', error) return NextResponse.json( { error: '處理請求時發生錯誤' }, { status: 500 } ) } }