summaryrefslogtreecommitdiff
path: root/src/remote/activitypub/kernel
diff options
context:
space:
mode:
authorMeiMei <30769358+mei23@users.noreply.github.com>2021-09-05 23:35:48 +0900
committerGitHub <noreply@github.com>2021-09-05 23:35:48 +0900
commit608ff73907a142de74aca544fbec823d90ed6dc9 (patch)
tree77062d63d886621f854d8af9ec9f381c31f237b0 /src/remote/activitypub/kernel
parent12.90.1 (diff)
downloadsharkey-608ff73907a142de74aca544fbec823d90ed6dc9.tar.gz
sharkey-608ff73907a142de74aca544fbec823d90ed6dc9.tar.bz2
sharkey-608ff73907a142de74aca544fbec823d90ed6dc9.zip
feat: リモートからユーザー削除が飛んできたら削除するように (#7768)
* Delete Actor * Update src/remote/activitypub/kernel/delete/actor.ts Co-authored-by: syuilo <Syuilotan@yahoo.co.jp> Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
Diffstat (limited to 'src/remote/activitypub/kernel')
-rw-r--r--src/remote/activitypub/kernel/delete/actor.ts26
-rw-r--r--src/remote/activitypub/kernel/delete/index.ts3
2 files changed, 28 insertions, 1 deletions
diff --git a/src/remote/activitypub/kernel/delete/actor.ts b/src/remote/activitypub/kernel/delete/actor.ts
new file mode 100644
index 0000000000..502f8d5ab5
--- /dev/null
+++ b/src/remote/activitypub/kernel/delete/actor.ts
@@ -0,0 +1,26 @@
+import { apLogger } from '../../logger';
+import { createDeleteAccountJob } from '@/queue';
+import { IRemoteUser } from '@/models/entities/user';
+import { Users } from '@/models/index';
+
+const logger = apLogger;
+
+export async function deleteActor(actor: IRemoteUser, uri: string): Promise<string> {
+ logger.info(`Deleting the Actor: ${uri}`);
+
+ if (actor.uri !== uri) {
+ return `skip: delete actor ${actor.uri} !== ${uri}`;
+ }
+
+ if (actor.isDeleted) {
+ logger.info(`skip: already deleted`);
+ }
+
+ const job = await createDeleteAccountJob(actor);
+
+ await Users.update(actor.id, {
+ isDeleted: true,
+ });
+
+ return `ok: queued ${job.name} ${job.id}`;
+}
diff --git a/src/remote/activitypub/kernel/delete/index.ts b/src/remote/activitypub/kernel/delete/index.ts
index 474f3f6d60..86a452de76 100644
--- a/src/remote/activitypub/kernel/delete/index.ts
+++ b/src/remote/activitypub/kernel/delete/index.ts
@@ -2,6 +2,7 @@ import deleteNote from './note';
import { IRemoteUser } from '@/models/entities/user';
import { IDelete, getApId, isTombstone, IObject, validPost, validActor } from '../../type';
import { toSingle } from '@/prelude/array';
+import { deleteActor } from './actor';
/**
* 削除アクティビティを捌きます
@@ -41,7 +42,7 @@ export default async (actor: IRemoteUser, activity: IDelete): Promise<string> =>
if (validPost.includes(formarType)) {
return await deleteNote(actor, uri);
} else if (validActor.includes(formarType)) {
- return `Delete Actor is not implanted`;
+ return await deleteActor(actor, uri);
} else {
return `Unknown type ${formarType}`;
}