Skip to content

Commit

Permalink
Ensure messages cannot be longer than 4096 characters
Browse files Browse the repository at this point in the history
  • Loading branch information
Qqwy committed Sep 27, 2018
1 parent 8cba456 commit 05dfd80
Show file tree
Hide file tree
Showing 3 changed files with 4 additions and 9 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -32,6 +32,7 @@ npm-debug.log

# Mnesia DB
/priv/*.DCD
/priv/*.DCL
/priv/DECISION_TAB.LOG
/priv/LATEST.LOG
/priv/schema.DAT
11 changes: 3 additions & 8 deletions lib/planga/chat/message.ex
Expand Up @@ -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) == ""
Expand Down
1 change: 0 additions & 1 deletion priv/repo/seeds.exs
Expand Up @@ -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}
Expand Down

0 comments on commit 05dfd80

Please sign in to comment.