diff options
| author | Johann150 <johann.galle@protonmail.com> | 2022-06-04 06:52:42 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-06-04 13:52:42 +0900 |
| commit | 32dff2846003bb079891593b660869511fca5f01 (patch) | |
| tree | 63fd57c6c44f0fbab66fa94e40696c1dca643de2 /packages/backend/src/remote/activitypub/renderer | |
| parent | fix: ensure resolver does not fetch local resources via HTTP(S) (#8733) (diff) | |
| download | misskey-32dff2846003bb079891593b660869511fca5f01.tar.gz misskey-32dff2846003bb079891593b660869511fca5f01.tar.bz2 misskey-32dff2846003bb079891593b660869511fca5f01.zip | |
fix: add id for activitypub follows (#8689)
* add id for activitypub follows
* fix lint
* fix: follower must be local, followee must be remote
Misskey will only use ActivityPub follow requests for users that are local
and are requesting to follow a remote user. This check is to ensure that
this endpoint can not be used by other services or instances.
* fix: missing import
* render block with id
* fix comment
Diffstat (limited to 'packages/backend/src/remote/activitypub/renderer')
| -rw-r--r-- | packages/backend/src/remote/activitypub/renderer/block.ts | 24 | ||||
| -rw-r--r-- | packages/backend/src/remote/activitypub/renderer/follow.ts | 3 |
2 files changed, 19 insertions, 8 deletions
diff --git a/packages/backend/src/remote/activitypub/renderer/block.ts b/packages/backend/src/remote/activitypub/renderer/block.ts index 10a4fde517..13815fb76f 100644 --- a/packages/backend/src/remote/activitypub/renderer/block.ts +++ b/packages/backend/src/remote/activitypub/renderer/block.ts @@ -1,8 +1,20 @@ import config from '@/config/index.js'; -import { ILocalUser, IRemoteUser } from '@/models/entities/user.js'; +import { Blocking } from '@/models/entities/blocking.js'; -export default (blocker: ILocalUser, blockee: IRemoteUser) => ({ - type: 'Block', - actor: `${config.url}/users/${blocker.id}`, - object: blockee.uri, -}); +/** + * Renders a block into its ActivityPub representation. + * + * @param block The block to be rendered. The blockee relation must be loaded. + */ +export function renderBlock(block: Blocking) { + if (block.blockee?.url == null) { + throw new Error('renderBlock: missing blockee uri'); + } + + return { + type: 'Block', + id: `${config.url}/blocks/${block.id}`, + actor: `${config.url}/users/${block.blockerId}`, + object: block.blockee.uri, + }; +} diff --git a/packages/backend/src/remote/activitypub/renderer/follow.ts b/packages/backend/src/remote/activitypub/renderer/follow.ts index 9e9692b77a..00fac18ad5 100644 --- a/packages/backend/src/remote/activitypub/renderer/follow.ts +++ b/packages/backend/src/remote/activitypub/renderer/follow.ts @@ -4,12 +4,11 @@ import { Users } from '@/models/index.js'; export default (follower: { id: User['id']; host: User['host']; uri: User['host'] }, followee: { id: User['id']; host: User['host']; uri: User['host'] }, requestId?: string) => { const follow = { + id: requestId ?? `${config.url}/follows/${follower.id}/${followee.id}`, type: 'Follow', actor: Users.isLocalUser(follower) ? `${config.url}/users/${follower.id}` : follower.uri, object: Users.isLocalUser(followee) ? `${config.url}/users/${followee.id}` : followee.uri, } as any; - if (requestId) follow.id = requestId; - return follow; }; |