diff options
author | Alex Gleason <alex@alexgleason.me> | 2020-07-17 19:11:28 -0500 |
---|---|---|
committer | Alex Gleason <alex@alexgleason.me> | 2020-07-17 19:17:15 -0500 |
commit | bd1e2e3a58ebd702306e7a6e2df985ac07e5f7d8 (patch) | |
tree | 63df26f9d8696e8d7470996ff52a7b940cb38f69 /lib | |
parent | d0eb43b58b0a191b727360cf4523329d2dc60adc (diff) | |
download | pleroma-bd1e2e3a58ebd702306e7a6e2df985ac07e5f7d8.tar.gz pleroma-bd1e2e3a58ebd702306e7a6e2df985ac07e5f7d8.zip |
Validate alias IDs
Diffstat (limited to 'lib')
-rw-r--r-- | lib/pleroma/user.ex | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/lib/pleroma/user.ex b/lib/pleroma/user.ex index 9b756c9a0..66664235b 100644 --- a/lib/pleroma/user.ex +++ b/lib/pleroma/user.ex @@ -47,6 +47,8 @@ defmodule Pleroma.User do # credo:disable-for-next-line Credo.Check.Readability.MaxLineLength @email_regex ~r/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/ + # credo:disable-for-next-line Credo.Check.Readability.MaxLineLength + @url_regex ~r/https?:\/\/[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&\/=]*)/ @strict_local_nickname_regex ~r/^[a-zA-Z\d]+$/ @extended_local_nickname_regex ~r/^[a-zA-Z\d_-]+$/ @@ -2278,6 +2280,7 @@ defmodule Pleroma.User do user |> change(%{ap_aliases: alias_set}) + |> validate_ap_aliases() |> Repo.update() end @@ -2290,6 +2293,16 @@ defmodule Pleroma.User do user |> change(%{ap_aliases: alias_set}) + |> validate_ap_aliases() |> Repo.update() end + + defp validate_ap_aliases(changeset) do + validate_change(changeset, :ap_aliases, fn :ap_aliases, ap_aliases -> + case Enum.all?(ap_aliases, fn a -> Regex.match?(@url_regex, a) end) do + true -> [] + false -> [ap_aliases: "Invalid ap_id format. Must be a URL."] + end + end) + end end |