Awesome
TheBigUsernameBlacklist
This library lets you validate usernames against a blacklist. The blacklist data is based on the data from The-Big-Username-Blacklist and contains privilege, programming terms, section names, financial terms and actions.
You can try the blacklist using the tool Username checker.
Installation
The package can be installed by adding the_big_username_blacklist
to your list of dependencies in mix.exs
:
def deps do
[
{:the_big_username_blacklist, "~> 0.1.2"}
]
end
Usage
iex> TheBigUsernameBlacklist.valid?("tonystark")
true
iex> TheBigUsernameBlacklist.valid?("logout")
false
Extending blacklist
This is useful when there are existing routes or reserved words that you don't want to be a valid username.
iex> custom_blacklist = ["about-me", "contact-us"]
iex> TheBigUsernameBlacklist.valid?("about-me", custom_blacklist)
false
iex> TheBigUsernameBlacklist.valid?("brucewayne", custom_blacklist)
true
With Ecto
def create_user_changeset(%User{} = user, attrs \\ %{}) do
user
|> user_changeset(attrs)
|> validate_required([:email, :username, :first_name, :last_name])
|> validate_username()
end
defp validate_username(%{changes: %{username: username}} = changeset) do
if TheBigUsernameBlacklist.valid?(username) do
changeset
else
add_error(changeset, :username, "Invalid username.")
end
end
defp validate_username(changeset), do: changeset
For more info, check https://hexdocs.pm/the_big_username_blacklist.
Other packages
The-Big-Username-Blacklist has been ported to different languages
License
MIT