Merge remote-tracking branch 'soapbox/develop' into pleroma-events
This commit is contained in:
commit
61e069df72
6 changed files with 34 additions and 20 deletions
|
@ -214,7 +214,8 @@ defp cachex_children do
|
||||||
expiration: chat_message_id_idempotency_key_expiration(),
|
expiration: chat_message_id_idempotency_key_expiration(),
|
||||||
limit: 500_000
|
limit: 500_000
|
||||||
),
|
),
|
||||||
build_cachex("translations", default_ttl: :timer.hours(24), limit: 5_000)
|
build_cachex("translations", default_ttl: :timer.hours(24), limit: 5_000),
|
||||||
|
build_cachex("rel_me", default_ttl: :timer.minutes(30), limit: 2_500)
|
||||||
]
|
]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -2713,10 +2713,11 @@ def sanitize_html(%User{} = user) do
|
||||||
# - display name
|
# - display name
|
||||||
def sanitize_html(%User{} = user, filter) do
|
def sanitize_html(%User{} = user, filter) do
|
||||||
fields =
|
fields =
|
||||||
Enum.map(user.fields, fn %{"name" => name, "value" => value} ->
|
Enum.map(user.fields, fn %{"name" => name, "value" => value} = field ->
|
||||||
%{
|
%{
|
||||||
"name" => name,
|
"name" => name,
|
||||||
"value" => HTML.filter_tags(value, Pleroma.HTML.Scrubber.LinksOnly)
|
"value" => HTML.filter_tags(value, Pleroma.HTML.Scrubber.LinksOnly),
|
||||||
|
"verified_at" => Map.get(field, "verified_at")
|
||||||
}
|
}
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
|
|
@ -259,7 +259,9 @@ def update_credentials(%{assigns: %{user: user}, body_params: params} = conn, _p
|
||||||
|
|
||||||
defp normalize_fields_attributes(fields) do
|
defp normalize_fields_attributes(fields) do
|
||||||
if Enum.all?(fields, &is_tuple/1) do
|
if Enum.all?(fields, &is_tuple/1) do
|
||||||
Enum.map(fields, fn {_, v} -> v end)
|
Enum.map(fields, fn {_, %{} = field} ->
|
||||||
|
%{"name" => field["name"], "value" => field["value"]}
|
||||||
|
end)
|
||||||
else
|
else
|
||||||
Enum.map(fields, fn
|
Enum.map(fields, fn
|
||||||
%{} = field -> %{"name" => field.name, "value" => field.value}
|
%{} = field -> %{"name" => field.name, "value" => field.value}
|
||||||
|
|
|
@ -74,7 +74,7 @@ defp is_status?(acct) do
|
||||||
def do_follow(%{assigns: %{user: %User{} = user}} = conn, %{"user" => %{"id" => id}}) do
|
def do_follow(%{assigns: %{user: %User{} = user}} = conn, %{"user" => %{"id" => id}}) do
|
||||||
with {:fetch_user, %User{} = followee} <- {:fetch_user, User.get_cached_by_id(id)},
|
with {:fetch_user, %User{} = followee} <- {:fetch_user, User.get_cached_by_id(id)},
|
||||||
{:ok, _, _, _} <- CommonAPI.follow(user, followee) do
|
{:ok, _, _, _} <- CommonAPI.follow(user, followee) do
|
||||||
redirect(conn, to: "/users/#{followee.id}")
|
redirect(conn, to: "/users/#{followee.nickname}")
|
||||||
else
|
else
|
||||||
error ->
|
error ->
|
||||||
handle_follow_error(conn, error)
|
handle_follow_error(conn, error)
|
||||||
|
@ -91,7 +91,7 @@ def do_follow(conn, %{"authorization" => %{"name" => _, "password" => _, "id" =>
|
||||||
{_, {:ok, user}, _} <- {:auth, WrapperAuthenticator.get_user(conn), followee},
|
{_, {:ok, user}, _} <- {:auth, WrapperAuthenticator.get_user(conn), followee},
|
||||||
{_, _, _, false} <- {:mfa_required, followee, user, MFA.require?(user)},
|
{_, _, _, false} <- {:mfa_required, followee, user, MFA.require?(user)},
|
||||||
{:ok, _, _, _} <- CommonAPI.follow(user, followee) do
|
{:ok, _, _, _} <- CommonAPI.follow(user, followee) do
|
||||||
redirect(conn, to: "/users/#{followee.id}")
|
redirect(conn, to: "/users/#{followee.nickname}")
|
||||||
else
|
else
|
||||||
error ->
|
error ->
|
||||||
handle_follow_error(conn, error)
|
handle_follow_error(conn, error)
|
||||||
|
@ -109,7 +109,7 @@ def do_follow(conn, %{"mfa" => %{"code" => code, "token" => token, "id" => id}})
|
||||||
{_, _, _, {:ok, _}} <-
|
{_, _, _, {:ok, _}} <-
|
||||||
{:verify_mfa_code, followee, token, TOTPAuthenticator.verify(code, user)},
|
{:verify_mfa_code, followee, token, TOTPAuthenticator.verify(code, user)},
|
||||||
{:ok, _, _, _} <- CommonAPI.follow(user, followee) do
|
{:ok, _, _, _} <- CommonAPI.follow(user, followee) do
|
||||||
redirect(conn, to: "/users/#{followee.id}")
|
redirect(conn, to: "/users/#{followee.nickname}")
|
||||||
else
|
else
|
||||||
error ->
|
error ->
|
||||||
handle_follow_error(conn, error)
|
handle_follow_error(conn, error)
|
||||||
|
|
|
@ -351,8 +351,12 @@ test "updates profile emojos", %{user: user, conn: conn} do
|
||||||
|
|
||||||
test "update fields", %{conn: conn} do
|
test "update fields", %{conn: conn} do
|
||||||
fields = [
|
fields = [
|
||||||
%{"name" => "<a href=\"http://google.com\">foo</a>", "value" => "<script>bar</script>"},
|
%{
|
||||||
%{"name" => "link.io", "value" => "cofe.io"}
|
"name" => "<a href=\"http://google.com\">foo</a>",
|
||||||
|
"value" => "<script>bar</script>",
|
||||||
|
"verified_at" => nil
|
||||||
|
},
|
||||||
|
%{"name" => "link.io", "value" => "cofe.io", "verified_at" => nil}
|
||||||
]
|
]
|
||||||
|
|
||||||
account_data =
|
account_data =
|
||||||
|
@ -361,10 +365,15 @@ test "update fields", %{conn: conn} do
|
||||||
|> json_response_and_validate_schema(200)
|
|> json_response_and_validate_schema(200)
|
||||||
|
|
||||||
assert account_data["fields"] == [
|
assert account_data["fields"] == [
|
||||||
%{"name" => "<a href=\"http://google.com\">foo</a>", "value" => "bar"},
|
%{
|
||||||
|
"name" => "<a href=\"http://google.com\">foo</a>",
|
||||||
|
"value" => "bar",
|
||||||
|
"verified_at" => nil
|
||||||
|
},
|
||||||
%{
|
%{
|
||||||
"name" => "link.io",
|
"name" => "link.io",
|
||||||
"value" => ~S(<a href="http://cofe.io" rel="ugc">cofe.io</a>)
|
"value" => ~S(<a href="http://cofe.io" rel="ugc">cofe.io</a>),
|
||||||
|
"verified_at" => nil
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -433,8 +442,8 @@ test "emojis in fields labels", %{conn: conn} do
|
||||||
|> json_response_and_validate_schema(200)
|
|> json_response_and_validate_schema(200)
|
||||||
|
|
||||||
assert account_data["fields"] == [
|
assert account_data["fields"] == [
|
||||||
%{"name" => ":firefox:", "value" => "is best 2hu"},
|
%{"name" => ":firefox:", "value" => "is best 2hu", "verified_at" => nil},
|
||||||
%{"name" => "they wins", "value" => ":blank:"}
|
%{"name" => "they wins", "value" => ":blank:", "verified_at" => nil}
|
||||||
]
|
]
|
||||||
|
|
||||||
assert account_data["source"]["fields"] == [
|
assert account_data["source"]["fields"] == [
|
||||||
|
@ -462,10 +471,11 @@ test "update fields via x-www-form-urlencoded", %{conn: conn} do
|
||||||
|> json_response_and_validate_schema(200)
|
|> json_response_and_validate_schema(200)
|
||||||
|
|
||||||
assert account["fields"] == [
|
assert account["fields"] == [
|
||||||
%{"name" => "foo", "value" => "bar"},
|
%{"name" => "foo", "value" => "bar", "verified_at" => nil},
|
||||||
%{
|
%{
|
||||||
"name" => "link",
|
"name" => "link",
|
||||||
"value" => ~S(<a href="http://cofe.io" rel="ugc">http://cofe.io</a>)
|
"value" => ~S(<a href="http://cofe.io" rel="ugc">http://cofe.io</a>),
|
||||||
|
"verified_at" => nil
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -487,7 +497,7 @@ test "update fields with empty name", %{conn: conn} do
|
||||||
|> json_response_and_validate_schema(200)
|
|> json_response_and_validate_schema(200)
|
||||||
|
|
||||||
assert account["fields"] == [
|
assert account["fields"] == [
|
||||||
%{"name" => "foo", "value" => ""}
|
%{"name" => "foo", "value" => "", "verified_at" => nil}
|
||||||
]
|
]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -167,7 +167,7 @@ test "follows user", %{conn: conn} do
|
||||||
|> assign(:token, insert(:oauth_token, user: user, scopes: ["write:follows"]))
|
|> assign(:token, insert(:oauth_token, user: user, scopes: ["write:follows"]))
|
||||||
|> post(remote_follow_path(conn, :do_follow), %{"user" => %{"id" => user2.id}})
|
|> post(remote_follow_path(conn, :do_follow), %{"user" => %{"id" => user2.id}})
|
||||||
|
|
||||||
assert redirected_to(conn) == "/users/#{user2.id}"
|
assert redirected_to(conn) == "/users/#{user2.nickname}"
|
||||||
end
|
end
|
||||||
|
|
||||||
test "returns error when user is deactivated", %{conn: conn} do
|
test "returns error when user is deactivated", %{conn: conn} do
|
||||||
|
@ -222,7 +222,7 @@ test "returns success result when user already in followers", %{conn: conn} do
|
||||||
|> assign(:token, insert(:oauth_token, user: user, scopes: ["write:follows"]))
|
|> assign(:token, insert(:oauth_token, user: user, scopes: ["write:follows"]))
|
||||||
|> post(remote_follow_path(conn, :do_follow), %{"user" => %{"id" => user2.id}})
|
|> post(remote_follow_path(conn, :do_follow), %{"user" => %{"id" => user2.id}})
|
||||||
|
|
||||||
assert redirected_to(conn) == "/users/#{user2.id}"
|
assert redirected_to(conn) == "/users/#{user2.nickname}"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -304,7 +304,7 @@ test "follows", %{conn: conn} do
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
assert redirected_to(conn) == "/users/#{user2.id}"
|
assert redirected_to(conn) == "/users/#{user2.nickname}"
|
||||||
assert user2.follower_address in User.following(user)
|
assert user2.follower_address in User.following(user)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -350,7 +350,7 @@ test "follows", %{conn: conn} do
|
||||||
"authorization" => %{"name" => user.nickname, "password" => "test", "id" => user2.id}
|
"authorization" => %{"name" => user.nickname, "password" => "test", "id" => user2.id}
|
||||||
})
|
})
|
||||||
|
|
||||||
assert redirected_to(conn) == "/users/#{user2.id}"
|
assert redirected_to(conn) == "/users/#{user2.nickname}"
|
||||||
assert user2.follower_address in User.following(user)
|
assert user2.follower_address in User.following(user)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue