summaryrefslogtreecommitdiff
path: root/packages/backend/src/services
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2022-06-27 23:49:16 +0900
committersyuilo <Syuilotan@yahoo.co.jp>2022-06-27 23:49:16 +0900
commit329f055a976dc3b2e12f2a0141bfab2c57ae9193 (patch)
tree0f11f906c0e0401b83604e91bfee33ff6214e254 /packages/backend/src/services
parentrefactor: remove duplicate code (#8895) (diff)
downloadsharkey-329f055a976dc3b2e12f2a0141bfab2c57ae9193.tar.gz
sharkey-329f055a976dc3b2e12f2a0141bfab2c57ae9193.tar.bz2
sharkey-329f055a976dc3b2e12f2a0141bfab2c57ae9193.zip
feat: make possible to delete an account by admin
Resolve #8830
Diffstat (limited to 'packages/backend/src/services')
-rw-r--r--packages/backend/src/services/delete-account.ts23
1 files changed, 23 insertions, 0 deletions
diff --git a/packages/backend/src/services/delete-account.ts b/packages/backend/src/services/delete-account.ts
new file mode 100644
index 0000000000..0fdceb671b
--- /dev/null
+++ b/packages/backend/src/services/delete-account.ts
@@ -0,0 +1,23 @@
+import { Users } from '@/models/index.js';
+import { createDeleteAccountJob } from '@/queue/index.js';
+import { publishUserEvent } from './stream.js';
+import { doPostSuspend } from './suspend-user.js';
+
+export async function deleteAccount(user: {
+ id: string;
+ host: string | null;
+}): Promise<void> {
+ // 物理削除する前にDelete activityを送信する
+ await doPostSuspend(user).catch(e => {});
+
+ createDeleteAccountJob(user, {
+ soft: false,
+ });
+
+ await Users.update(user.id, {
+ isDeleted: true,
+ });
+
+ // Terminate streaming
+ publishUserEvent(user.id, 'terminate', {});
+}