diff options
| author | MeiMei <30769358+mei23@users.noreply.github.com> | 2021-02-06 11:43:12 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-02-06 11:43:12 +0900 |
| commit | 3be7eafa6b01cfcaad46032404a874e8bd291167 (patch) | |
| tree | 1c034db0fb36e3fb2fbb4be3715f0e20b9f09ea3 /src | |
| parent | ウィンドウからページのソースが見れないのを修正 (#7136) (diff) | |
| download | sharkey-3be7eafa6b01cfcaad46032404a874e8bd291167.tar.gz sharkey-3be7eafa6b01cfcaad46032404a874e8bd291167.tar.bz2 sharkey-3be7eafa6b01cfcaad46032404a874e8bd291167.zip | |
Fix: Duplicate system users are created (#7141)
Diffstat (limited to 'src')
| -rw-r--r-- | src/services/create-system-user.ts | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/src/services/create-system-user.ts b/src/services/create-system-user.ts index 3c44c7427f..39ddc92abd 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; |