fix: support soft-delete user uniqueness in tools
This commit is contained in:
@@ -19,7 +19,9 @@ function hashPassword(value) {
|
||||
}
|
||||
|
||||
async function main() {
|
||||
const existingUser = await prisma.user.findUnique({ where: { username } });
|
||||
const existingUser = await prisma.user.findFirst({
|
||||
where: { username, deletedAt: null },
|
||||
});
|
||||
const createPassword = configuredPassword || randomBytes(18).toString('base64url');
|
||||
const updatePassword = configuredPassword;
|
||||
const role = await prisma.role.upsert({
|
||||
@@ -27,26 +29,30 @@ async function main() {
|
||||
update: { name: '平台管理员', scope: 'platform' },
|
||||
create: { code: 'platform_admin', name: '平台管理员', scope: 'platform' },
|
||||
});
|
||||
const user = await prisma.user.upsert({
|
||||
where: { username },
|
||||
update: {
|
||||
email,
|
||||
displayName: '生产平台管理员',
|
||||
...(updatePassword ? { passwordHash: hashPassword(updatePassword) } : {}),
|
||||
status: 'active',
|
||||
failedLoginCount: 0,
|
||||
lockedUntil: null,
|
||||
deletedAt: null,
|
||||
tenantId: null,
|
||||
},
|
||||
create: {
|
||||
username,
|
||||
email,
|
||||
displayName: '生产平台管理员',
|
||||
passwordHash: hashPassword(createPassword),
|
||||
status: 'active',
|
||||
},
|
||||
});
|
||||
const userData = {
|
||||
email,
|
||||
displayName: '生产平台管理员',
|
||||
...(updatePassword ? { passwordHash: hashPassword(updatePassword) } : {}),
|
||||
status: 'active',
|
||||
failedLoginCount: 0,
|
||||
lockedUntil: null,
|
||||
deletedAt: null,
|
||||
tenantId: null,
|
||||
};
|
||||
const user = existingUser
|
||||
? await prisma.user.update({
|
||||
where: { id: existingUser.id },
|
||||
data: userData,
|
||||
})
|
||||
: await prisma.user.create({
|
||||
data: {
|
||||
username,
|
||||
email,
|
||||
displayName: '生产平台管理员',
|
||||
passwordHash: hashPassword(createPassword),
|
||||
status: 'active',
|
||||
},
|
||||
});
|
||||
await prisma.userRole.upsert({
|
||||
where: { userId_roleId: { userId: user.id, roleId: role.id } },
|
||||
update: {},
|
||||
|
||||
@@ -25,29 +25,35 @@ async function ensureSmokeData() {
|
||||
create: { code: tenantCode, name: 'Smoke Test Enterprise', status: 'active' },
|
||||
});
|
||||
|
||||
const user = await prisma.user.upsert({
|
||||
where: { username },
|
||||
update: {
|
||||
tenantId: tenant.id,
|
||||
email,
|
||||
phone,
|
||||
displayName: 'Smoke Client Admin',
|
||||
passwordHash: hashPassword(password),
|
||||
status: 'active',
|
||||
failedLoginCount: 0,
|
||||
lockedUntil: null,
|
||||
deletedAt: null,
|
||||
},
|
||||
create: {
|
||||
tenantId: tenant.id,
|
||||
username,
|
||||
email,
|
||||
phone,
|
||||
displayName: 'Smoke Client Admin',
|
||||
passwordHash: hashPassword(password),
|
||||
status: 'active',
|
||||
},
|
||||
const existingUser = await prisma.user.findFirst({
|
||||
where: { username, deletedAt: null },
|
||||
});
|
||||
const user = existingUser
|
||||
? await prisma.user.update({
|
||||
where: { id: existingUser.id },
|
||||
data: {
|
||||
tenantId: tenant.id,
|
||||
email,
|
||||
phone,
|
||||
displayName: 'Smoke Client Admin',
|
||||
passwordHash: hashPassword(password),
|
||||
status: 'active',
|
||||
failedLoginCount: 0,
|
||||
lockedUntil: null,
|
||||
deletedAt: null,
|
||||
},
|
||||
})
|
||||
: await prisma.user.create({
|
||||
data: {
|
||||
tenantId: tenant.id,
|
||||
username,
|
||||
email,
|
||||
phone,
|
||||
displayName: 'Smoke Client Admin',
|
||||
passwordHash: hashPassword(password),
|
||||
status: 'active',
|
||||
},
|
||||
});
|
||||
|
||||
const enterpriseAdminRole = await prisma.role.upsert({
|
||||
where: { code: 'enterprise_admin' },
|
||||
|
||||
Reference in New Issue
Block a user