forked from AkkomaGang/akkoma
User search respect discoverable flag
This commit is contained in:
parent
6b9bfc9e86
commit
41939e3175
6 changed files with 45 additions and 21 deletions
|
@ -52,6 +52,7 @@ defp search_query(query_string, for_user, following) do
|
||||||
|> base_query(following)
|
|> base_query(following)
|
||||||
|> filter_blocked_user(for_user)
|
|> filter_blocked_user(for_user)
|
||||||
|> filter_invisible_users()
|
|> filter_invisible_users()
|
||||||
|
|> filter_discoverable_users()
|
||||||
|> filter_internal_users()
|
|> filter_internal_users()
|
||||||
|> filter_blocked_domains(for_user)
|
|> filter_blocked_domains(for_user)
|
||||||
|> fts_search(query_string)
|
|> fts_search(query_string)
|
||||||
|
@ -122,6 +123,10 @@ defp filter_invisible_users(query) do
|
||||||
from(q in query, where: q.invisible == false)
|
from(q in query, where: q.invisible == false)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
defp filter_discoverable_users(query) do
|
||||||
|
from(q in query, where: q.discoverable == true)
|
||||||
|
end
|
||||||
|
|
||||||
defp filter_internal_users(query) do
|
defp filter_internal_users(query) do
|
||||||
from(q in query, where: q.actor_type != "Application")
|
from(q in query, where: q.actor_type != "Application")
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,20 +1,24 @@
|
||||||
{
|
{
|
||||||
"@context": ["https://www.w3.org/ns/activitystreams", "https://w3id.org/security/v1", {
|
"@context": [
|
||||||
"manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
|
"https://www.w3.org/ns/activitystreams",
|
||||||
"sensitive": "as:sensitive",
|
"https://w3id.org/security/v1",
|
||||||
"movedTo": "as:movedTo",
|
{
|
||||||
"Hashtag": "as:Hashtag",
|
"manuallyApprovesFollowers": "as:manuallyApprovesFollowers",
|
||||||
"ostatus": "http://ostatus.org#",
|
"sensitive": "as:sensitive",
|
||||||
"atomUri": "ostatus:atomUri",
|
"movedTo": "as:movedTo",
|
||||||
"inReplyToAtomUri": "ostatus:inReplyToAtomUri",
|
"Hashtag": "as:Hashtag",
|
||||||
"conversation": "ostatus:conversation",
|
"ostatus": "http://ostatus.org#",
|
||||||
"toot": "http://joinmastodon.org/ns#",
|
"atomUri": "ostatus:atomUri",
|
||||||
"Emoji": "toot:Emoji",
|
"inReplyToAtomUri": "ostatus:inReplyToAtomUri",
|
||||||
"alsoKnownAs": {
|
"conversation": "ostatus:conversation",
|
||||||
"@id": "as:alsoKnownAs",
|
"toot": "http://joinmastodon.org/ns#",
|
||||||
"@type": "@id"
|
"Emoji": "toot:Emoji",
|
||||||
|
"alsoKnownAs": {
|
||||||
|
"@id": "as:alsoKnownAs",
|
||||||
|
"@type": "@id"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}],
|
],
|
||||||
"id": "http://mastodon.example.org/users/admin",
|
"id": "http://mastodon.example.org/users/admin",
|
||||||
"type": "Person",
|
"type": "Person",
|
||||||
"following": "http://mastodon.example.org/users/admin/following",
|
"following": "http://mastodon.example.org/users/admin/following",
|
||||||
|
@ -23,6 +27,7 @@
|
||||||
"outbox": "http://mastodon.example.org/users/admin/outbox",
|
"outbox": "http://mastodon.example.org/users/admin/outbox",
|
||||||
"preferredUsername": "admin",
|
"preferredUsername": "admin",
|
||||||
"name": null,
|
"name": null,
|
||||||
|
"discoverable": "true",
|
||||||
"summary": "\u003cp\u003e\u003c/p\u003e",
|
"summary": "\u003cp\u003e\u003c/p\u003e",
|
||||||
"url": "http://mastodon.example.org/@admin",
|
"url": "http://mastodon.example.org/@admin",
|
||||||
"manuallyApprovesFollowers": false,
|
"manuallyApprovesFollowers": false,
|
||||||
|
@ -34,7 +39,8 @@
|
||||||
"owner": "http://mastodon.example.org/users/admin",
|
"owner": "http://mastodon.example.org/users/admin",
|
||||||
"publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtc4Tir+3ADhSNF6VKrtW\nOU32T01w7V0yshmQei38YyiVwVvFu8XOP6ACchkdxbJ+C9mZud8qWaRJKVbFTMUG\nNX4+6Q+FobyuKrwN7CEwhDALZtaN2IPbaPd6uG1B7QhWorrY+yFa8f2TBM3BxnUy\nI4T+bMIZIEYG7KtljCBoQXuTQmGtuffO0UwJksidg2ffCF5Q+K//JfQagJ3UzrR+\nZXbKMJdAw4bCVJYs4Z5EhHYBwQWiXCyMGTd7BGlmMkY6Av7ZqHKC/owp3/0EWDNz\nNqF09Wcpr3y3e8nA10X40MJqp/wR+1xtxp+YGbq/Cj5hZGBG7etFOmIpVBrDOhry\nBwIDAQAB\n-----END PUBLIC KEY-----\n"
|
"publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtc4Tir+3ADhSNF6VKrtW\nOU32T01w7V0yshmQei38YyiVwVvFu8XOP6ACchkdxbJ+C9mZud8qWaRJKVbFTMUG\nNX4+6Q+FobyuKrwN7CEwhDALZtaN2IPbaPd6uG1B7QhWorrY+yFa8f2TBM3BxnUy\nI4T+bMIZIEYG7KtljCBoQXuTQmGtuffO0UwJksidg2ffCF5Q+K//JfQagJ3UzrR+\nZXbKMJdAw4bCVJYs4Z5EhHYBwQWiXCyMGTd7BGlmMkY6Av7ZqHKC/owp3/0EWDNz\nNqF09Wcpr3y3e8nA10X40MJqp/wR+1xtxp+YGbq/Cj5hZGBG7etFOmIpVBrDOhry\nBwIDAQAB\n-----END PUBLIC KEY-----\n"
|
||||||
},
|
},
|
||||||
"attachment": [{
|
"attachment": [
|
||||||
|
{
|
||||||
"type": "PropertyValue",
|
"type": "PropertyValue",
|
||||||
"name": "foo",
|
"name": "foo",
|
||||||
"value": "bar"
|
"value": "bar"
|
||||||
|
@ -58,5 +64,7 @@
|
||||||
"mediaType": "image/png",
|
"mediaType": "image/png",
|
||||||
"url": "https://cdn.niu.moe/accounts/headers/000/033/323/original/850b3448fa5fd477.png"
|
"url": "https://cdn.niu.moe/accounts/headers/000/033/323/original/850b3448fa5fd477.png"
|
||||||
},
|
},
|
||||||
"alsoKnownAs": ["http://example.org/users/foo"]
|
"alsoKnownAs": [
|
||||||
|
"http://example.org/users/foo"
|
||||||
|
]
|
||||||
}
|
}
|
|
@ -8,6 +8,7 @@
|
||||||
"preferredUsername": "mike",
|
"preferredUsername": "mike",
|
||||||
"name": "Mike Macgirvin (Osada)",
|
"name": "Mike Macgirvin (Osada)",
|
||||||
"updated": "2018-08-29T03:09:11Z",
|
"updated": "2018-08-29T03:09:11Z",
|
||||||
|
"discoverable": "true",
|
||||||
"icon": {
|
"icon": {
|
||||||
"type": "Image",
|
"type": "Image",
|
||||||
"mediaType": "image/jpeg",
|
"mediaType": "image/jpeg",
|
||||||
|
|
|
@ -31,6 +31,7 @@ def user_factory do
|
||||||
nickname: sequence(:nickname, &"nick#{&1}"),
|
nickname: sequence(:nickname, &"nick#{&1}"),
|
||||||
password_hash: Pbkdf2.hash_pwd_salt("test"),
|
password_hash: Pbkdf2.hash_pwd_salt("test"),
|
||||||
bio: sequence(:bio, &"Tester Number #{&1}"),
|
bio: sequence(:bio, &"Tester Number #{&1}"),
|
||||||
|
discoverable: true,
|
||||||
last_digest_emailed_at: NaiveDateTime.utc_now(),
|
last_digest_emailed_at: NaiveDateTime.utc_now(),
|
||||||
last_refreshed_at: NaiveDateTime.utc_now(),
|
last_refreshed_at: NaiveDateTime.utc_now(),
|
||||||
notification_settings: %Pleroma.User.NotificationSetting{},
|
notification_settings: %Pleroma.User.NotificationSetting{},
|
||||||
|
|
|
@ -177,5 +177,14 @@ test "it returns unapproved user" do
|
||||||
assert total == 3
|
assert total == 3
|
||||||
assert count == 1
|
assert count == 1
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "it returns non-discoverable users" do
|
||||||
|
insert(:user)
|
||||||
|
insert(:user, discoverable: false)
|
||||||
|
|
||||||
|
{:ok, _results, total} = Search.user()
|
||||||
|
|
||||||
|
assert total == 2
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -68,7 +68,7 @@ test "Represent a user account" do
|
||||||
sensitive: false,
|
sensitive: false,
|
||||||
pleroma: %{
|
pleroma: %{
|
||||||
actor_type: "Person",
|
actor_type: "Person",
|
||||||
discoverable: false
|
discoverable: true
|
||||||
},
|
},
|
||||||
fields: []
|
fields: []
|
||||||
},
|
},
|
||||||
|
@ -166,7 +166,7 @@ test "Represent a Service(bot) account" do
|
||||||
sensitive: false,
|
sensitive: false,
|
||||||
pleroma: %{
|
pleroma: %{
|
||||||
actor_type: "Service",
|
actor_type: "Service",
|
||||||
discoverable: false
|
discoverable: true
|
||||||
},
|
},
|
||||||
fields: []
|
fields: []
|
||||||
},
|
},
|
||||||
|
|
Loading…
Reference in a new issue