Add configurable registration_reason limit
authorAlex Gleason <alex@alexgleason.me>
Mon, 27 Jul 2020 20:13:34 +0000 (15:13 -0500)
committerAlex Gleason <alex@alexgleason.me>
Mon, 27 Jul 2020 20:13:34 +0000 (15:13 -0500)
config/config.exs
lib/pleroma/user.ex
priv/repo/migrations/20200712234852_add_approval_fields_to_users.exs
test/user_test.exs

index d8bf921bbccf37b8c5ea2ed23605dba03d60e776..1dc196a6b2a96a6c284b73b3131ab767a2a54b4e 100644 (file)
@@ -238,6 +238,7 @@ config :pleroma, :instance,
   max_remote_account_fields: 20,
   account_field_name_length: 512,
   account_field_value_length: 2048,
+  registration_reason_length: 500,
   external_user_synchronization: true,
   extended_nickname_format: true,
   cleanup_attachments: false,
index a78123fe42b911db24e7477e97fdfc3851058485..913b6afd1fe846568027922fa7c47fce50c035dd 100644 (file)
@@ -641,6 +641,7 @@ defmodule Pleroma.User do
   def register_changeset(struct, params \\ %{}, opts \\ []) do
     bio_limit = Config.get([:instance, :user_bio_length], 5000)
     name_limit = Config.get([:instance, :user_name_length], 100)
+    reason_limit = Config.get([:instance, :registration_reason_length], 500)
     params = Map.put_new(params, :accepts_chat_messages, true)
 
     need_confirmation? =
@@ -681,6 +682,7 @@ defmodule Pleroma.User do
     |> validate_format(:email, @email_regex)
     |> validate_length(:bio, max: bio_limit)
     |> validate_length(:name, min: 1, max: name_limit)
+    |> validate_length(:registration_reason, max: reason_limit)
     |> maybe_validate_required_email(opts[:external])
     |> put_password_hash
     |> put_ap_id()
index 559640f012500c4dfd3332e43a78379bb7fa6ab2..43f741a5b47c35c2f5de690997d520998e541ae1 100644 (file)
@@ -4,7 +4,7 @@ defmodule Pleroma.Repo.Migrations.AddApprovalFieldsToUsers do
   def change do
     alter table(:users) do
       add(:approval_pending, :boolean)
-      add(:registration_reason, :string)
+      add(:registration_reason, :text)
     end
   end
 end
index 5da86bcec46c2f10c2d6683bd8ad84803ef0a0be..5bf677666855b1ed286d59f24dbeb2e9a4f6e8e1 100644 (file)
@@ -550,7 +550,8 @@ defmodule Pleroma.UserTest do
       nickname: "nick",
       password: "test",
       password_confirmation: "test",
-      email: "email@example.com"
+      email: "email@example.com",
+      registration_reason: "I'm a cool guy :)"
     }
     setup do: clear_config([:instance, :account_approval_required], true)
 
@@ -561,6 +562,21 @@ defmodule Pleroma.UserTest do
       {:ok, user} = Repo.insert(changeset)
 
       assert user.approval_pending
+      assert user.registration_reason == "I'm a cool guy :)"
+    end
+
+    test "it restricts length of registration reason" do
+      reason_limit = Pleroma.Config.get([:instance, :registration_reason_length])
+
+      assert is_integer(reason_limit)
+
+      params =
+        @full_user_data
+        |> Map.put(:registration_reason, "Quia et nesciunt dolores numquam ipsam nisi sapiente soluta. Ullam repudiandae nisi quam porro officiis officiis ad. Consequatur animi velit ex quia. Odit voluptatem perferendis quia ut nisi. Dignissimos sit soluta atque aliquid dolorem ut dolorum ut. Labore voluptates iste iusto amet voluptatum earum. Ad fugit illum nam eos ut nemo. Pariatur ea fuga non aspernatur. Dignissimos debitis officia corporis est nisi ab et. Atque itaque alias eius voluptas minus. Accusamus numquam tempore occaecati in.")
+
+      changeset = User.register_changeset(%User{}, params)
+
+      refute changeset.valid?
     end
   end