2026-05-25 16:20:26 +08:00

72 lines
1.9 KiB
TypeScript

import { NextRequest, NextResponse } from 'next/server'
import { prisma } from '@/lib/prisma'
import {
consumeDingtalkLoginToken,
createDingtalkLoginToken,
} from '@/lib/dingtalk-login-token'
export async function POST(request: NextRequest) {
try {
const { profileToken, department } = await request.json()
if (!profileToken || !department) {
return NextResponse.json(
{ success: false, message: '缺少必要参数' },
{ status: 400 }
)
}
console.log('完善钉钉用户信息(选择部门)')
const currentUser = await consumeDingtalkLoginToken(profileToken, 'complete_profile')
if (!currentUser) {
return NextResponse.json(
{ success: false, message: '登录凭证无效或已过期,请重新登录' },
{ status: 401 }
)
}
// 直接更新部门信息(用户名已在登录时设置)
const user = await prisma.user.update({
where: { id: currentUser.id },
data: {
department,
}
})
console.log('用户信息更新成功:', user.username)
const loginTokenResult = user.isActive
? await createDingtalkLoginToken(user.id, 'login')
: null
// 返回用户信息(不包含敏感信息)
return NextResponse.json({
success: true,
message: '信息完善成功',
loginToken: loginTokenResult?.token,
user: {
id: user.id,
username: user.username,
email: user.email,
realName: user.realName,
avatar: user.avatar,
role: user.role,
department: user.department,
isActive: user.isActive
}
})
} catch (error: any) {
console.error('完善用户信息失败:', error)
return NextResponse.json(
{
success: false,
message: error.message || '信息提交失败,请稍后再试'
},
{ status: 500 }
)
}
}