diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2021-11-07 18:04:32 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-11-07 18:04:32 +0900 |
| commit | a28c515ef63a6f9c188cf0a7f544db1afa8e1331 (patch) | |
| tree | 4b207f6998e0697ab5c732c04769b069dfd054c7 /src/server/activitypub | |
| parent | perf: delete-account処理を軽くする (#7958) (diff) | |
| download | sharkey-a28c515ef63a6f9c188cf0a7f544db1afa8e1331.tar.gz sharkey-a28c515ef63a6f9c188cf0a7f544db1afa8e1331.tar.bz2 sharkey-a28c515ef63a6f9c188cf0a7f544db1afa8e1331.zip | |
feat: make possible to configure following/followers visibility (#7959)
* feat: make possible to configure following/followers visibility
* add test
* ap
* add ap test
* set Cache-Control
* hide following/followers count
Diffstat (limited to 'src/server/activitypub')
| -rw-r--r-- | src/server/activitypub/followers.ts | 16 | ||||
| -rw-r--r-- | src/server/activitypub/following.ts | 16 |
2 files changed, 30 insertions, 2 deletions
diff --git a/src/server/activitypub/followers.ts b/src/server/activitypub/followers.ts index 8b6a066bf0..baf2d23460 100644 --- a/src/server/activitypub/followers.ts +++ b/src/server/activitypub/followers.ts @@ -8,7 +8,7 @@ import renderOrderedCollection from '@/remote/activitypub/renderer/ordered-colle import renderOrderedCollectionPage from '@/remote/activitypub/renderer/ordered-collection-page'; import renderFollowUser from '@/remote/activitypub/renderer/follow-user'; import { setResponseType } from '../activitypub'; -import { Users, Followings } from '@/models/index'; +import { Users, Followings, UserProfiles } from '@/models/index'; import { LessThan } from 'typeorm'; export default async (ctx: Router.RouterContext) => { @@ -38,6 +38,20 @@ export default async (ctx: Router.RouterContext) => { return; } + //#region Check ff visibility + const profile = await UserProfiles.findOneOrFail(user.id); + + if (profile.ffVisibility === 'private') { + ctx.status = 403; + ctx.set('Cache-Control', 'public, max-age=30'); + return; + } else if (profile.ffVisibility === 'followers') { + ctx.status = 403; + ctx.set('Cache-Control', 'public, max-age=30'); + return; + } + //#endregion + const limit = 10; const partOf = `${config.url}/users/${userId}/followers`; diff --git a/src/server/activitypub/following.ts b/src/server/activitypub/following.ts index 5fc5d68a9c..b9eb806c3c 100644 --- a/src/server/activitypub/following.ts +++ b/src/server/activitypub/following.ts @@ -8,7 +8,7 @@ import renderOrderedCollection from '@/remote/activitypub/renderer/ordered-colle import renderOrderedCollectionPage from '@/remote/activitypub/renderer/ordered-collection-page'; import renderFollowUser from '@/remote/activitypub/renderer/follow-user'; import { setResponseType } from '../activitypub'; -import { Users, Followings } from '@/models/index'; +import { Users, Followings, UserProfiles } from '@/models/index'; import { LessThan, FindConditions } from 'typeorm'; import { Following } from '@/models/entities/following'; @@ -39,6 +39,20 @@ export default async (ctx: Router.RouterContext) => { return; } + //#region Check ff visibility + const profile = await UserProfiles.findOneOrFail(user.id); + + if (profile.ffVisibility === 'private') { + ctx.status = 403; + ctx.set('Cache-Control', 'public, max-age=30'); + return; + } else if (profile.ffVisibility === 'followers') { + ctx.status = 403; + ctx.set('Cache-Control', 'public, max-age=30'); + return; + } + //#endregion + const limit = 10; const partOf = `${config.url}/users/${userId}/following`; |