Phauxth

Hex.pm Version Join the chat at https://gitter.im/phauxth_elixir/Lobby

Authentication library for Phoenix, and other Plug-based, web applications.

Phauxth is designed with Phoenix 1.3 in mind, but it can also be used with older versions of Phoenix and any other Plug-based application.

Configuring Phauxth

Phauxth uses the user context module (normally MyApp.Accounts) to communicate with the underlying database. This module needs to have the get(id) and get_by(attrs) functions defined (see the examples below).

def get(id), do: Repo.get(User, id)
def get_by(%{"email" => email}) do
Repo.get_by(User, email: email)
end

In addition, if you are using tokens, for an api or for user confirmation, you need to add token_salt to the Phauxth config. You can generate a suitably secure random salt by running the Phauxth.Config.gen_token_salt command.

Getting started with Phauxth and Phoenix

Create new Phoenix project

Run the following commands (replace alibaba with the name of your project):

mix phx.new alibaba
cd alibaba

To create an api, change the mix phx.new command to:

mix phx.new alibaba --no-html --no-brunch

Run the Phauxth installer

N.B. if you are not using Erlang 20, you might have to build the installer yourself. You can find the instructions in the README in the installer/new directory.

Download and install the phauxth_new installer.

mix archive.install https://github.com/riverrun/phauxth/raw/master/installer/archives/phauxth_new.ez

For a basic setup, run the following command:

mix phauxth.new

If you want to add email / phone confirmation and password resetting, add the --confirm option:

mix phauxth.new --confirm

If you want to create authentication files for an api, use the --api option:

mix phauxth.new --api

And for api with user confirmation:

mix phauxth.new --api --confirm

Add phauxth to deps

  1. Make sure you are using Elixir 1.4 or above.

  2. Add phauxth and the password hashing algorithm you want to use (argon2_elixir, bcrypt_elixir or pbkdf2_elixir) to your mix.exs dependencies.

defp deps do
[
{:phauxth, "~> 0.15"},
{:bcrypt_elixir, "~> 0.12"},
]
end
  1. Run mix deps.get.

  2. Add the get(id) and get_by(attrs) functions to your user Accounts module.

  3. If you are using tokens, add the token_salt value to the config.

See the wiki for more information about Phauxth.

License

BSD