first commit
This commit is contained in:
57
src/pages/api/users/[id].ts
Normal file
57
src/pages/api/users/[id].ts
Normal file
@@ -0,0 +1,57 @@
|
||||
//src\pages\api\users\[id].ts
|
||||
import type { NextApiRequest, NextApiResponse } from 'next';
|
||||
import { User } from '@/models';
|
||||
import connectDB from '@/utils/ConnectDB';
|
||||
import { IUser } from '@/models/types'; // 导入 IUser 接口类型
|
||||
import bcrypt from 'bcryptjs';
|
||||
|
||||
const handler = async (req: NextApiRequest, res: NextApiResponse) => {
|
||||
const { query: { id }, method } = req;
|
||||
|
||||
switch (method) {
|
||||
case 'GET':
|
||||
try {
|
||||
const user = await User.findById(id).populate('团队').populate('角色') as IUser; // 断言为 IUser 类型
|
||||
if (!user) {
|
||||
return res.status(404).json({ message: '未找到用户' });
|
||||
}
|
||||
res.status(200).json(user);
|
||||
} catch (error) {
|
||||
res.status(500).json({ message: '服务器错误' });
|
||||
}
|
||||
break;
|
||||
case 'PUT':
|
||||
try {
|
||||
const { 姓名, 电话, 邮箱, 团队, 角色, 微信昵称, 头像, unionid, openid, 密码 } = req.body as IUser; // 断言为 IUser 类型
|
||||
const updateData = { 姓名, 电话, 邮箱, 团队, 角色, 微信昵称, 头像, unionid, openid } as IUser; // 断言为 IUser 类型
|
||||
// 只有当密码字段存在且非空时,才进行更新密码操作
|
||||
if (密码) {
|
||||
updateData.密码 = await bcrypt.hash(密码, 10);
|
||||
}
|
||||
const updatedUser = await User.findByIdAndUpdate(id, updateData, { new: true }) as IUser; // 断言为 IUser 类型
|
||||
if (!updatedUser) {
|
||||
return res.status(404).json({ message: '未找到用户' });
|
||||
}
|
||||
res.status(200).json({ message: '用户更新成功', user: updatedUser });
|
||||
} catch (error) {
|
||||
res.status(400).json({ message: '更新用户失败' });
|
||||
}
|
||||
break;
|
||||
case 'DELETE':
|
||||
try {
|
||||
const deletedUser = await User.findByIdAndDelete(id);
|
||||
if (!deletedUser) {
|
||||
return res.status(404).json({ message: '未找到用户' });
|
||||
}
|
||||
res.status(200).json({ message: '用户删除成功' });
|
||||
} catch (error) {
|
||||
res.status(500).json({ message: '服务器错误' });
|
||||
}
|
||||
break;
|
||||
default:
|
||||
res.setHeader('Allow', ['GET', 'PUT', 'DELETE']);
|
||||
res.status(405).end(`不允许 ${method} 方法`);
|
||||
}
|
||||
};
|
||||
|
||||
export default connectDB(handler);
|
||||
Reference in New Issue
Block a user