gongxiangp2/scripts/activate-user.ts
chenpei ea9076df45 feat: 实现统一的下载错误处理系统并修复产品全案数据库Schema
- 创建统一的下载错误处理模块 (lib/download-errors.ts)
- 实现13种错误类型分类和中文错误消息
- 后端统一使用 createDownloadError 创建标准化错误响应
- 前端统一使用 parseDownloadError 解析错误并显示
- 修复正式系统数据库Schema,添加产品全案相关字段和表
- 执行数据库迁移:添加 task_no, task_status, task_fetched_at 字段
- 创建 material_assets, api_keys, api_call_logs 表
2026-01-05 17:52:42 +08:00

88 lines
2.4 KiB
TypeScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 激活用户账户的脚本
* 使用方法: npx tsx scripts/activate-user.ts <用户名或邮箱>
*/
import { PrismaClient } from '@prisma/client';
const prisma = new PrismaClient();
async function activateUser(identifier: string) {
console.log(`\n=== 激活用户: ${identifier} ===\n`);
try {
// 查找用户(支持用户名或邮箱)
const user = await prisma.user.findFirst({
where: {
OR: [
{ username: identifier },
{ email: identifier },
],
},
select: {
id: true,
username: true,
email: true,
realName: true,
isActive: true,
role: true,
department: true,
createdAt: true,
},
});
if (!user) {
console.error(`❌ 未找到用户: ${identifier}`);
console.log('\n提示: 请检查用户名或邮箱是否正确');
return;
}
console.log('📋 用户信息:');
console.log(' - ID:', user.id);
console.log(' - 用户名:', user.username);
console.log(' - 邮箱:', user.email);
console.log(' - 真实姓名:', user.realName || '(未设置)');
console.log(' - 当前状态:', user.isActive ? '✅ 已激活' : '❌ 未激活');
console.log(' - 角色:', user.role);
console.log(' - 部门:', user.department || '(未设置)');
console.log(' - 创建时间:', user.createdAt.toLocaleString('zh-CN'));
if (user.isActive) {
console.log('\n✅ 用户已经是激活状态,无需操作');
return;
}
// 确认激活
console.log('\n⚠️ 准备激活该用户...');
// 更新用户状态
await prisma.user.update({
where: { id: user.id },
data: { isActive: true },
});
console.log('\n✅ 用户已成功激活!');
console.log(' 现在该用户可以使用钉钉登录系统了');
} catch (error) {
console.error('\n❌ 激活用户时出错:', error);
if (error instanceof Error) {
console.error('错误信息:', error.message);
}
} finally {
await prisma.$disconnect();
}
}
// 执行激活
const identifier = process.argv[2];
if (!identifier) {
console.error('❌ 请提供用户名或邮箱');
console.log('\n使用方法: npx tsx scripts/activate-user.ts <用户名或邮箱>');
console.log('示例: npx tsx scripts/activate-user.ts 玄女');
process.exit(1);
}
activateUser(identifier);