diff --git a/src/services/create-system-user.ts b/src/services/create-system-user.ts index 3c44c7427..39ddc92ab 100644 --- a/src/services/create-system-user.ts +++ b/src/services/create-system-user.ts @@ -25,7 +25,14 @@ export async function createSystemUser(username: string) { // Start transaction await getConnection().transaction(async transactionalEntityManager => { - account = await transactionalEntityManager.save(new User({ + const exist = await transactionalEntityManager.findOne(User, { + usernameLower: username.toLowerCase(), + host: null + }); + + if (exist) throw new Error('the user is already exists'); + + account = await transactionalEntityManager.insert(User, { id: genId(), createdAt: new Date(), username: username, @@ -36,24 +43,24 @@ export async function createSystemUser(username: string) { isLocked: true, isExplorable: false, isBot: true, - })); + }).then(x => transactionalEntityManager.findOneOrFail(User, x.identifiers[0])); - await transactionalEntityManager.save(new UserKeypair({ + await transactionalEntityManager.insert(UserKeypair, { publicKey: keyPair.publicKey, privateKey: keyPair.privateKey, userId: account.id - })); + }); - await transactionalEntityManager.save(new UserProfile({ + await transactionalEntityManager.insert(UserProfile, { userId: account.id, autoAcceptFollowed: false, password: hash, - })); + }); - await transactionalEntityManager.save(new UsedUsername({ + await transactionalEntityManager.insert(UsedUsername, { createdAt: new Date(), username: username.toLowerCase(), - })); + }); }); return account;