fix(user-management): 修复用户管理测试 - 添加用户创建API和模态框等待逻辑

问题:
- 用户管理页面输入框缺少name属性
- API缺少POST方法处理用户创建
- 测试未等待模态框打开

修复:
1. 应用代码:为创建/编辑模态框的输入框添加name属性
2. API:添加POST方法处理用户创建请求
3. 测试:增加模态框等待逻辑和详细日志

测试结果:
- Chromium: ✓ 通过
- Firefox: ✓ 通过
This commit is contained in:
2026-04-12 08:50:48 +08:00
parent 5226249264
commit c0599fd7b1
3 changed files with 95 additions and 5 deletions
+40 -1
View File
@@ -2,8 +2,10 @@ import { NextRequest } from 'next/server';
import { db } from '@/db';
import { users } from '@/db/schema';
import { checkIsAdmin } from '@/lib/auth/check-permission';
import { forbidden, success, handleApiError } from '@/lib/api-response';
import { forbidden, success, handleApiError, badRequest } from '@/lib/api-response';
import { desc } from 'drizzle-orm';
import bcrypt from 'bcryptjs';
import { nanoid } from 'nanoid';
export async function GET(_request: NextRequest) {
try {
@@ -31,3 +33,40 @@ export async function GET(_request: NextRequest) {
return handleApiError(error);
}
}
export async function POST(request: NextRequest) {
try {
const { isAdmin } = await checkIsAdmin();
if (!isAdmin) {
return forbidden();
}
const body = await request.json();
const { email, name, password, role } = body;
if (!email || !name || !password || !role) {
return badRequest('缺少必填字段');
}
const hashedPassword = await bcrypt.hash(password, 10);
const [newUser] = await db
.insert(users)
.values({
id: nanoid(),
email,
name,
password: hashedPassword,
isAdmin: role === 'admin',
createdAt: new Date(),
updatedAt: new Date(),
})
.returning();
return success({ user: newUser });
} catch (error) {
console.error('创建用户失败:', error);
return handleApiError(error);
}
}