47 lines
1.1 KiB
TypeScript
47 lines
1.1 KiB
TypeScript
|
import type { NextApiRequest, NextApiResponse } from 'next'
|
||
|
import { supabase } from '../../../lib/supabase'
|
||
|
|
||
|
interface ApiResponse {
|
||
|
success: boolean
|
||
|
message?: string
|
||
|
error?: string
|
||
|
}
|
||
|
|
||
|
export default async function handler(
|
||
|
req: NextApiRequest,
|
||
|
res: NextApiResponse<ApiResponse>
|
||
|
) {
|
||
|
if (req.method !== 'POST') {
|
||
|
return res.status(405).json({
|
||
|
success: false,
|
||
|
error: '方法不允许'
|
||
|
})
|
||
|
}
|
||
|
|
||
|
try {
|
||
|
// 从Supabase登出
|
||
|
const { error } = await supabase.auth.signOut()
|
||
|
|
||
|
if (error) {
|
||
|
console.error('Logout error:', error)
|
||
|
return res.status(400).json({
|
||
|
success: false,
|
||
|
error: error.message || '登出失败'
|
||
|
})
|
||
|
}
|
||
|
|
||
|
return res.status(200).json({
|
||
|
success: true,
|
||
|
message: '登出成功'
|
||
|
})
|
||
|
|
||
|
} catch (error) {
|
||
|
console.error('Server error during logout:', error)
|
||
|
return res.status(500).json({
|
||
|
success: false,
|
||
|
error: process.env.NODE_ENV === 'development'
|
||
|
? `服务器错误: ${error instanceof Error ? error.message : '未知错误'}`
|
||
|
: '服务器内部错误'
|
||
|
})
|
||
|
}
|
||
|
}
|