summaryrefslogtreecommitdiff
path: root/src/server/api/endpoints
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2021-08-21 12:41:56 +0900
committerGitHub <noreply@github.com>2021-08-21 12:41:56 +0900
commitfd1ef4a62d670aab5f0c0089ab3806639c779813 (patch)
tree0a13e5827e0a45dcc9aa592ea09a968369ff0058 /src/server/api/endpoints
parentfix bug (diff)
downloadsharkey-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.ts13
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', {});