init2
This commit is contained in:
62
app/api/users/[id]/route.ts
Normal file
62
app/api/users/[id]/route.ts
Normal file
@@ -0,0 +1,62 @@
|
||||
import { NextRequest, NextResponse } from 'next/server'
|
||||
import { userService } from '@/lib/database'
|
||||
|
||||
// 更新用戶
|
||||
export async function PUT(
|
||||
request: NextRequest,
|
||||
{ params }: { params: { id: string } }
|
||||
) {
|
||||
try {
|
||||
const body = await request.json()
|
||||
const { name, email, role, avatar_url } = body
|
||||
|
||||
// 驗證必填欄位
|
||||
if (!name || !email || !role) {
|
||||
return NextResponse.json(
|
||||
{ error: '姓名、電子郵件和角色為必填欄位' },
|
||||
{ status: 400 }
|
||||
)
|
||||
}
|
||||
|
||||
// 驗證角色
|
||||
const validRoles = ['executive', 'manager', 'hr']
|
||||
if (!validRoles.includes(role)) {
|
||||
return NextResponse.json(
|
||||
{ error: '無效的角色類型' },
|
||||
{ status: 400 }
|
||||
)
|
||||
}
|
||||
|
||||
const updatedUser = await userService.updateUser(params.id, {
|
||||
name,
|
||||
email,
|
||||
role,
|
||||
avatar_url
|
||||
})
|
||||
|
||||
return NextResponse.json(updatedUser)
|
||||
} catch (error) {
|
||||
console.error('更新用戶失敗:', error)
|
||||
return NextResponse.json(
|
||||
{ error: '更新用戶失敗' },
|
||||
{ status: 500 }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
// 刪除用戶
|
||||
export async function DELETE(
|
||||
request: NextRequest,
|
||||
{ params }: { params: { id: string } }
|
||||
) {
|
||||
try {
|
||||
await userService.deleteUser(params.id)
|
||||
return NextResponse.json({ message: '用戶刪除成功' })
|
||||
} catch (error) {
|
||||
console.error('刪除用戶失敗:', error)
|
||||
return NextResponse.json(
|
||||
{ error: '刪除用戶失敗' },
|
||||
{ status: 500 }
|
||||
)
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user