Skip to content

Instantly share code, notes, and snippets.

@aequanimitas
Forked from mgamini/Elixir Email Validation
Created July 11, 2018 04:53
Show Gist options
  • Save aequanimitas/19613f5f85cb75dae1a1a53e64d4cb2f to your computer and use it in GitHub Desktop.
Save aequanimitas/19613f5f85cb75dae1a1a53e64d4cb2f to your computer and use it in GitHub Desktop.
Elixir Email Validation
defmodule EmailValidator do
# ensure that the email looks valid
def validate_email(email) when is_binary(email) do
case Regex.run(~r/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/, email) do
nil ->
{:error, "Invalid email"}
[email] ->
try do
Regex.run(~r/(\w+)@([\w.]+)/, email) |> validate_email
rescue
_ -> {:error, "Invalid email"}
end
end
end
# check the email against a list of accepted domains, then make check if it is unique
def validate_email([email, username, host]) do
case host in Config.accepted_domains do
true ->
case find_by_email(email) do
nil -> :ok
_account -> :account
end
_ ->
{:error, "Not an accepted domain."}
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment