summaryrefslogtreecommitdiff
path: root/src/server/api/endpoints
diff options
context:
space:
mode:
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', {});