diff options
| author | MeiMei <30769358+mei23@users.noreply.github.com> | 2021-09-05 23:35:48 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-09-05 23:35:48 +0900 |
| commit | 608ff73907a142de74aca544fbec823d90ed6dc9 (patch) | |
| tree | 77062d63d886621f854d8af9ec9f381c31f237b0 /src/remote/activitypub/kernel | |
| parent | 12.90.1 (diff) | |
| download | sharkey-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.ts | 26 | ||||
| -rw-r--r-- | src/remote/activitypub/kernel/delete/index.ts | 3 |
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}`; } |