Popularity
4.3
Stable
Activity
0.0
Stable
36
2
3

Monthly Downloads: 65
Programming language: Elixir
License: BSD 3-clause "New" or "Revised" License
Tags: Authentication    
Latest version: v0.3.0

aeacus alternatives and similar packages

Based on the "Authentication" category.
Alternatively, view aeacus alternatives based on common mentions on social networks and blogs.

Do you think we are missing an alternative of aeacus or a related project?

Add another 'Authentication' Package

README

Aeacus - The holder of keys

A simple, secure, and highly configurable Elixir identity [username | email | id | etc.]/password authentication module to use with Map compatible data structures (ex.Ecto).

Build Status Hex.pm Hex.pm Github Issues Pending Pull-Requests

Description

Aeacus only performs authentication, making it well suited for integration with session storage, or a token system; like Guardian or Phoenix Tokens. For convenience, authenticate/2 & authenticate_resource/3 are delegated from Aeacus (Aeacus.authenticate(...)).

Aeacus.hashpwsalt/1 delegates to the underlying crypto system to salt and hash a password.

Dependencies

Ecto is required only if you wish to use Aeacus.authenticate/2; if using Aeacus.authenticate_resource/3 Ecto is not required.

Requirements

Aeacus requires that you have a Map compatible data structure (ex. Ecto Model) that has a UNIQUE(identity_field) and password_field. These fields can be configured to easily match your schema, whether it be username, email, or pass, password, hash, hashed_password, etc. Of course, the passwords must be stored using the same crypto system as Aeacus; The password should be salted and hashed, plaintext is heavily discouraged. See the tests for examples.

Config

You must set the :repo and :model for Aeacus. The other options have sane defaults.

config :aeacus, Aeacus,
  repo: MyApp.Repo,
  model: MyApp.User,
  # Optional, The following are the default options
  crypto: Comeonin.Pbkdf2,
  identity_field: :email,
  password_field: :hashed_password,
  error_message: "Invalid identity or password."

Example Session Controller

Aeacus.authenticate expects a Map with keys :identity, and :password. Alternatively, Aeacus.authenticate_resource can be used if a resource is already loaded.

defmodule MyApp.SessionController do
  def create(conn, params) do
    case Aeacus.authenticate %{identity: params[:email], password: params[:pass]} do
      {:ok, user} -> CreateTokenOrCookie
      {:error, message} -> DisplayAuthenticationScreenAgain
    end
  end
end