diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2021-08-21 12:41:56 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-08-21 12:41:56 +0900 |
| commit | fd1ef4a62d670aab5f0c0089ab3806639c779813 (patch) | |
| tree | 0a13e5827e0a45dcc9aa592ea09a968369ff0058 /src/server/api/endpoints | |
| parent | fix bug (diff) | |
| download | sharkey-fd1ef4a62d670aab5f0c0089ab3806639c779813.tar.gz sharkey-fd1ef4a62d670aab5f0c0089ab3806639c779813.tar.bz2 sharkey-fd1ef4a62d670aab5f0c0089ab3806639c779813.zip | |
enhance(server): Use job queue for account delete (#7668)
* enhance(server): Use job queue for account delete
Fix #5336
* ジョブをひとつに
* remove done call
* clean up
* add User.isDeleted
* コミット忘れ
* Update 1629512953000-user-is-deleted.ts
* show dialog
* lint
* Update 1629512953000-user-is-deleted.ts
Diffstat (limited to 'src/server/api/endpoints')
| -rw-r--r-- | src/server/api/endpoints/i/delete-account.ts | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/server/api/endpoints/i/delete-account.ts b/src/server/api/endpoints/i/delete-account.ts index f761e5cc34..77f11925cd 100644 --- a/src/server/api/endpoints/i/delete-account.ts +++ b/src/server/api/endpoints/i/delete-account.ts @@ -1,9 +1,10 @@ import $ from 'cafy'; import * as bcrypt from 'bcryptjs'; import define from '../../define'; -import { Users, UserProfiles } from '@/models/index'; +import { UserProfiles, Users } from '@/models/index'; import { doPostSuspend } from '@/services/suspend-user'; import { publishUserEvent } from '@/services/stream'; +import { createDeleteAccountJob } from '@/queue'; export const meta = { requireCredential: true as const, @@ -19,6 +20,10 @@ export const meta = { export default define(meta, async (ps, user) => { const profile = await UserProfiles.findOneOrFail(user.id); + const userDetailed = await Users.findOneOrFail(user.id); + if (userDetailed.isDeleted) { + return; + } // Compare password const same = await bcrypt.compare(ps.password, profile.password!); @@ -30,7 +35,11 @@ export default define(meta, async (ps, user) => { // 物理削除する前にDelete activityを送信する await doPostSuspend(user).catch(e => {}); - await Users.delete(user.id); + createDeleteAccountJob(user); + + await Users.update(user.id, { + isDeleted: true, + }); // Terminate streaming publishUserEvent(user.id, 'terminate', {}); |