summaryrefslogtreecommitdiff
path: root/src/server/activitypub
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2021-11-07 18:04:32 +0900
committerGitHub <noreply@github.com>2021-11-07 18:04:32 +0900
commita28c515ef63a6f9c188cf0a7f544db1afa8e1331 (patch)
tree4b207f6998e0697ab5c732c04769b069dfd054c7 /src/server/activitypub
parentperf: delete-account処理を軽くする (#7958) (diff)
downloadsharkey-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.ts16
-rw-r--r--src/server/activitypub/following.ts16
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`;