Browse Source

truncate fields for remote users instead

object-id-column
Sadposter 4 years ago
parent
commit
35ef470d00
2 changed files with 20 additions and 4 deletions
  1. +7
    -0
      lib/pleroma/user/info.ex
  2. +13
    -4
      test/user_test.exs

+ 7
- 0
lib/pleroma/user/info.ex View File

@@ -242,6 +242,7 @@ defmodule Pleroma.User.Info do
end

def remote_user_creation(info, params) do
params = Map.put(params, "fields", Enum.map(params["fields"], &truncate_field/1))
info
|> cast(params, [
:ap_enabled,
@@ -326,6 +327,12 @@ defmodule Pleroma.User.Info do

defp valid_field?(_), do: false

defp truncate_field(%{"name" => name, "value" => value}) do
{name, _chopped} = String.split_at(name, Pleroma.Config.get([:instance, :account_field_name_length], 255))
{value, _chopped} = String.split_at(value, Pleroma.Config.get([:instance, :account_field_value_length], 255))
%{"name" => name, "value" => value}
end

@spec confirmation_changeset(Info.t(), keyword()) :: Changeset.t()
def confirmation_changeset(info, opts) do
need_confirmation? = Keyword.get(opts, :need_confirmation)


+ 13
- 4
test/user_test.exs View File

@@ -1117,11 +1117,20 @@ defmodule Pleroma.UserTest do
assert {:ok, _key} = User.get_public_key_for_ap_id("http://mastodon.example.org/users/admin")
end

test "insert or update a user from given data" do
user = insert(:user, %{nickname: "nick@name.de"})
data = %{ap_id: user.ap_id <> "xxx", name: user.name, nickname: user.nickname}
describe "insert or update a user from given data" do
test "with normal data" do
user = insert(:user, %{nickname: "nick@name.de"})
data = %{ap_id: user.ap_id <> "xxx", name: user.name, nickname: user.nickname}

assert {:ok, %User{}} = User.insert_or_update_user(data)
assert {:ok, %User{}} = User.insert_or_update_user(data)
end

test "with overly long fields" do
current_max_length = Pleroma.Config.get([:instance, :account_field_value_length], 255)
user = insert(:user, nickname: "nickname@supergood.domain")
data = %{ap_id: user.ap_id, info: %{ fields: [%{"name" => "myfield", "value" => String.duplicate("h", current_max_length + 1)}] }}
assert {:ok, %User{}} = User.insert_or_update_user(data)
end
end

describe "per-user rich-text filtering" do


Loading…
Cancel
Save