-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(backend): check visibility of following/followers of remote users / feat: moderators can see following/followers of all users #14375
Conversation
このPRによるapi.jsonの差分 差分はこちら |
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## develop #14375 +/- ##
============================================
- Coverage 66.21% 39.97% -26.25%
============================================
Files 990 1544 +554
Lines 117137 190414 +73277
Branches 4489 2717 -1772
============================================
- Hits 77568 76124 -1444
- Misses 39538 113729 +74191
- Partials 31 561 +530 ☔ View full report in Codecov by Sentry. |
13362をresolveするか微妙に思います |
#13128 に倣ってモデレータが非公開のfollowing/followersを見られるようにする機能もとりあえず本PRにまとめて追加しておきました。 |
(再試行で通りましたね) |
`createPerson`と`if`の条件を統一するとともに、異常系の 処理をearly returnに追い出すための変更。
モデレーターが Related to #12214 |
🙏🏿🙏🏿 |
… / feat: moderators can see following/followers of all users (misskey-dev#14375) * fix(backend): check visibility of following/followers of remote users Resolves misskey-dev#13362. * test(backend): add tests for visibility of following/followers of remote users * docs(changelog): update CHANGELOG.md * feat: moderators can see following/followers of all users * docs(changelog): update CHANGELOG.md * refactor(backend): minor refactoring `createPerson`と`if`の条件を統一するとともに、異常系の 処理をearly returnに追い出すための変更。 * feat(backend): moderators can see following/followers count of all users As per misskey-dev#14375 (comment).
private async isPublicCollection(collection: string | ICollection | IOrderedCollection | undefined, resolver: Resolver): Promise<boolean> { | ||
if (collection) { | ||
const resolved = await resolver.resolveCollection(collection); | ||
if (resolved.first || (resolved as ICollection).items || (resolved as IOrderedCollection).orderedItems) { | ||
return true; | ||
} | ||
} | ||
|
||
return false; | ||
} | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
itemsが0より上だった場合に公開扱いして良いのか?
Mastodonのすごくわかりづらいコードも、判定に使用しているのはfirstだけでitemsは考慮してないように見えるのだわね。
https://github.com/mastodon/mastodon/pull/11673/files#diff-0bc8e960429e6c65ff6b5f31c40c67ed4cab1904dcf2dcb9f13d1503338c84ef
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Activity Streams勧告のCollections節によると、Mastodonのようにfirst
プロパティでCollectionPage
オブジェクトを指す形式の他にitems
をCollection
に直接埋め込む形も規定されているので、単にMastodonのコードがMastodon以外のサーバを想定していないだけであろうと認識しています。
ちなみに0
のような整数値を取るのはitems
でなくtotalItems
プロパティですね。
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
itemsでなくtotalItemsプロパティですね。
ごめんそれと間違ってたのだわ
… / feat: moderators can see following/followers of all users (misskey-dev#14375) Cherry-picked from 0d508db Co-authored-by: Daiki Mizukami <[email protected]>
What
リモートユーザのプロフィールを取得する際にActivityPubアクターの
following
とfollowers
コレクションの取得を試み、その内容が取得できない場合は当該ユーザのフォロー・フォロワーの一覧を非公開としてデータベースに登録するようにします。また、モデレータが全てのローカル・リモートユーザのフォロー・フォロワーの一覧を取得できるようにします。
Why
Resolves #13362.
Additional info (optional)
最低限の単体テストは追加していますが実際のサーバにおける連合の挙動は未確認です。
先行事例:mastodon/mastodon#11673(https://github.com/mastodon/mastodon/blob/9d8dfeb5fbbc274482489a3ac9f22dd736da156c/app/services/activitypub/process_account_service.rb#L262-L281)
本パッチでは「フォロワー限定」の公開範囲はとりあえず一律で非公開として扱うものとしています。
Checklist