Skip to content

darwintantuco/the_big_username_blacklist

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TheBigUsernameBlacklist

Elixir CI

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

About

Elixir library for The-Big-Username-Blacklist (Opinionated username blacklist).

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages