From 05dfd80cf7287a814105596cc2bbec58a0617c6c Mon Sep 17 00:00:00 2001 From: Qqwy/Wiebe-Marten Wijnja Date: Thu, 27 Sep 2018 13:31:00 +0200 Subject: [PATCH] Ensure messages cannot be longer than 4096 characters --- .gitignore | 1 + lib/planga/chat/message.ex | 11 +++-------- priv/repo/seeds.exs | 1 - 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index f1694ad..0e1c983 100644 --- a/.gitignore +++ b/.gitignore @@ -32,6 +32,7 @@ npm-debug.log # Mnesia DB /priv/*.DCD +/priv/*.DCL /priv/DECISION_TAB.LOG /priv/LATEST.LOG /priv/schema.DAT diff --git a/lib/planga/chat/message.ex b/lib/planga/chat/message.ex index 3bc88cf..8b35d83 100644 --- a/lib/planga/chat/message.ex +++ b/lib/planga/chat/message.ex @@ -18,19 +18,14 @@ defmodule Planga.Chat.Message do |> change(uuid: (message.uuid || Ecto.UUID.autogenerate)) # Not auto-handled by Ecto.Mnesia |> cast(attrs, [:sender_id, :content]) |> validate_required([:sender_id, :content, :uuid, :conversation_id]) - |> validate_message_content() + |> validate_change(:content, fn :content, message -> valid_message?(message.content) end) end @doc """ False if message is invalid and should not be sent. """ - def valid_message?(message) do - not empty_message?(message) && validate_message_content(message).valid? - end - - def validate_message_content(message) do - message - |> validate_length(:content, max: 4096) # To prevent abuse + def valid_message?(message_content) do + not empty_message?(message_content) && String.length(message_content) <= 4096 end defp empty_message?(message), do: String.trim(message) == "" diff --git a/priv/repo/seeds.exs b/priv/repo/seeds.exs index 367af08..10446d7 100644 --- a/priv/repo/seeds.exs +++ b/priv/repo/seeds.exs @@ -14,7 +14,6 @@ IO.inspect :mnesia.system_info(:is_running) Planga.Repo.transaction(fn -> Planga.Repo.insert!(%Planga.Chat.App{ - id: 1, name: "Planga Test", api_key_pairs: [ %Planga.Chat.APIKeyPair{public_id: "foobar", secret_key: "iv3lCL2TgVG3skeVF4l5-Q", enabled: true}