Add `also_known_as` field to Pleroma.User
This commit is contained in:
parent
96cd66ac1b
commit
b777083f3f
|
@ -105,6 +105,7 @@ defmodule Pleroma.User do
|
||||||
field(:discoverable, :boolean, default: false)
|
field(:discoverable, :boolean, default: false)
|
||||||
field(:invisible, :boolean, default: false)
|
field(:invisible, :boolean, default: false)
|
||||||
field(:skip_thread_containment, :boolean, default: false)
|
field(:skip_thread_containment, :boolean, default: false)
|
||||||
|
field(:also_known_as, {:array, :string}, default: [])
|
||||||
|
|
||||||
field(:notification_settings, :map,
|
field(:notification_settings, :map,
|
||||||
default: %{
|
default: %{
|
||||||
|
@ -324,7 +325,8 @@ def remote_user_creation(params) do
|
||||||
:fields,
|
:fields,
|
||||||
:following_count,
|
:following_count,
|
||||||
:discoverable,
|
:discoverable,
|
||||||
:invisible
|
:invisible,
|
||||||
|
:also_known_as
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|> validate_required([:name, :ap_id])
|
|> validate_required([:name, :ap_id])
|
||||||
|
@ -373,7 +375,8 @@ def update_changeset(struct, params \\ %{}) do
|
||||||
:fields,
|
:fields,
|
||||||
:raw_fields,
|
:raw_fields,
|
||||||
:pleroma_settings_store,
|
:pleroma_settings_store,
|
||||||
:discoverable
|
:discoverable,
|
||||||
|
:also_known_as
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|> unique_constraint(:nickname)
|
|> unique_constraint(:nickname)
|
||||||
|
@ -413,7 +416,8 @@ def upgrade_changeset(struct, params \\ %{}, remote? \\ false) do
|
||||||
:hide_followers,
|
:hide_followers,
|
||||||
:discoverable,
|
:discoverable,
|
||||||
:hide_followers_count,
|
:hide_followers_count,
|
||||||
:hide_follows_count
|
:hide_follows_count,
|
||||||
|
:also_known_as
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
|> unique_constraint(:nickname)
|
|> unique_constraint(:nickname)
|
||||||
|
|
|
@ -1117,7 +1117,8 @@ defp object_to_user_data(data) do
|
||||||
name: data["name"],
|
name: data["name"],
|
||||||
follower_address: data["followers"],
|
follower_address: data["followers"],
|
||||||
following_address: data["following"],
|
following_address: data["following"],
|
||||||
bio: data["summary"]
|
bio: data["summary"],
|
||||||
|
also_known_as: Map.get(data, "alsoKnownAs", [])
|
||||||
}
|
}
|
||||||
|
|
||||||
# nickname can be nil because of virtual actors
|
# nickname can be nil because of virtual actors
|
||||||
|
|
|
@ -616,7 +616,7 @@ def handle_incoming(
|
||||||
|
|
||||||
update_data =
|
update_data =
|
||||||
new_user_data
|
new_user_data
|
||||||
|> Map.take([:avatar, :banner, :bio, :name])
|
|> Map.take([:avatar, :banner, :bio, :name, :also_known_as])
|
||||||
|> Map.put(:fields, fields)
|
|> Map.put(:fields, fields)
|
||||||
|> Map.put(:locked, locked)
|
|> Map.put(:locked, locked)
|
||||||
|> Map.put(:invisible, invisible)
|
|> Map.put(:invisible, invisible)
|
||||||
|
|
|
@ -0,0 +1,9 @@
|
||||||
|
defmodule Pleroma.Repo.Migrations.AddAlsoKnownAsToUsers do
|
||||||
|
use Ecto.Migration
|
||||||
|
|
||||||
|
def change do
|
||||||
|
alter table(:users) do
|
||||||
|
add(:also_known_as, {:array, :string}, default: [])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -28,6 +28,10 @@
|
||||||
"oauthRegistrationEndpoint": {
|
"oauthRegistrationEndpoint": {
|
||||||
"@id": "litepub:oauthRegistrationEndpoint",
|
"@id": "litepub:oauthRegistrationEndpoint",
|
||||||
"@type": "@id"
|
"@type": "@id"
|
||||||
|
},
|
||||||
|
"alsoKnownAs": {
|
||||||
|
"@id": "as:alsoKnownAs",
|
||||||
|
"@type": "@id"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
@ -9,7 +9,11 @@
|
||||||
"inReplyToAtomUri": "ostatus:inReplyToAtomUri",
|
"inReplyToAtomUri": "ostatus:inReplyToAtomUri",
|
||||||
"conversation": "ostatus:conversation",
|
"conversation": "ostatus:conversation",
|
||||||
"toot": "http://joinmastodon.org/ns#",
|
"toot": "http://joinmastodon.org/ns#",
|
||||||
"Emoji": "toot:Emoji"
|
"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",
|
||||||
|
@ -50,5 +54,6 @@
|
||||||
"type": "Image",
|
"type": "Image",
|
||||||
"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"]
|
||||||
}
|
}
|
||||||
|
|
|
@ -592,6 +592,37 @@ test "it works for incoming update activities" do
|
||||||
assert user.bio == "<p>Some bio</p>"
|
assert user.bio == "<p>Some bio</p>"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
test "it works with alsoKnownAs" do
|
||||||
|
{:ok, %Activity{data: %{"actor" => actor}}} =
|
||||||
|
"test/fixtures/mastodon-post-activity.json"
|
||||||
|
|> File.read!()
|
||||||
|
|> Poison.decode!()
|
||||||
|
|> Transmogrifier.handle_incoming()
|
||||||
|
|
||||||
|
assert User.get_cached_by_ap_id(actor).also_known_as == ["http://example.org/users/foo"]
|
||||||
|
|
||||||
|
{:ok, _activity} =
|
||||||
|
"test/fixtures/mastodon-update.json"
|
||||||
|
|> File.read!()
|
||||||
|
|> Poison.decode!()
|
||||||
|
|> Map.put("actor", actor)
|
||||||
|
|> Map.update!("object", fn object ->
|
||||||
|
object
|
||||||
|
|> Map.put("actor", actor)
|
||||||
|
|> Map.put("id", actor)
|
||||||
|
|> Map.put("alsoKnownAs", [
|
||||||
|
"http://mastodon.example.org/users/foo",
|
||||||
|
"http://example.org/users/bar"
|
||||||
|
])
|
||||||
|
end)
|
||||||
|
|> Transmogrifier.handle_incoming()
|
||||||
|
|
||||||
|
assert User.get_cached_by_ap_id(actor).also_known_as == [
|
||||||
|
"http://mastodon.example.org/users/foo",
|
||||||
|
"http://example.org/users/bar"
|
||||||
|
]
|
||||||
|
end
|
||||||
|
|
||||||
test "it works with custom profile fields" do
|
test "it works with custom profile fields" do
|
||||||
{:ok, activity} =
|
{:ok, activity} =
|
||||||
"test/fixtures/mastodon-post-activity.json"
|
"test/fixtures/mastodon-post-activity.json"
|
||||||
|
|
Loading…
Reference in New Issue