實作管理者用戶管理、邀請註冊功能
This commit is contained in:
@@ -23,42 +23,69 @@ export async function POST(request: NextRequest) {
|
||||
)
|
||||
}
|
||||
|
||||
// 檢查用戶是否已存在
|
||||
const existingUser = await userService.findByEmail(email)
|
||||
if (existingUser) {
|
||||
return NextResponse.json(
|
||||
{ error: '該電子郵件已被註冊' },
|
||||
{ status: 409 }
|
||||
)
|
||||
}
|
||||
|
||||
// 加密密碼
|
||||
const saltRounds = 12
|
||||
const password_hash = await bcrypt.hash(password, saltRounds)
|
||||
|
||||
// 創建新用戶
|
||||
const newUser = {
|
||||
id: uuidv4(),
|
||||
name,
|
||||
email,
|
||||
password_hash,
|
||||
department,
|
||||
role: role as 'user' | 'developer' | 'admin',
|
||||
join_date: new Date().toISOString().split('T')[0],
|
||||
total_likes: 0,
|
||||
total_views: 0,
|
||||
is_active: true
|
||||
// 檢查是否為邀請用戶(狀態為 invited)
|
||||
const invitedUser = await userService.findInvitedUserByEmail(email)
|
||||
|
||||
if (invitedUser) {
|
||||
// 更新邀請用戶為正式用戶
|
||||
const updatedUser = await userService.completeInvitedUserRegistration(
|
||||
invitedUser.id,
|
||||
name,
|
||||
department,
|
||||
password_hash,
|
||||
role
|
||||
)
|
||||
|
||||
if (updatedUser.success) {
|
||||
const { password_hash: _, ...userWithoutPassword } = updatedUser.user
|
||||
return NextResponse.json({
|
||||
success: true,
|
||||
user: userWithoutPassword
|
||||
})
|
||||
} else {
|
||||
return NextResponse.json(
|
||||
{ error: updatedUser.error || '完成註冊失敗' },
|
||||
{ status: 400 }
|
||||
)
|
||||
}
|
||||
} else {
|
||||
// 檢查用戶是否已存在(活躍用戶)
|
||||
const existingUser = await userService.findByEmail(email)
|
||||
if (existingUser) {
|
||||
return NextResponse.json(
|
||||
{ error: '該電子郵件已被註冊' },
|
||||
{ status: 409 }
|
||||
)
|
||||
}
|
||||
|
||||
// 創建新用戶
|
||||
const newUser = {
|
||||
id: uuidv4(),
|
||||
name,
|
||||
email,
|
||||
password_hash,
|
||||
department,
|
||||
role: role as 'user' | 'developer' | 'admin',
|
||||
join_date: new Date().toISOString().split('T')[0],
|
||||
total_likes: 0,
|
||||
total_views: 0,
|
||||
status: 'active' as 'active' | 'inactive' | 'invited'
|
||||
}
|
||||
|
||||
const createdUser = await userService.create(newUser)
|
||||
|
||||
// 返回用戶信息(不包含密碼)
|
||||
const { password_hash: _, ...userWithoutPassword } = createdUser
|
||||
return NextResponse.json({
|
||||
success: true,
|
||||
user: userWithoutPassword
|
||||
})
|
||||
}
|
||||
|
||||
const createdUser = await userService.create(newUser)
|
||||
|
||||
// 返回用戶信息(不包含密碼)
|
||||
const { password_hash: _, ...userWithoutPassword } = createdUser
|
||||
return NextResponse.json({
|
||||
success: true,
|
||||
user: userWithoutPassword
|
||||
})
|
||||
|
||||
} catch (error) {
|
||||
console.error('註冊錯誤:', error)
|
||||
return NextResponse.json(
|
||||
|
Reference in New Issue
Block a user