Openmaize v2.5.1 Openmaize.Login

Module to handle login.

There are three options:

  • repo - the name of the repo

    • the default is MyApp.Repo - using the name of the project
  • user_model - the name of the user model

    • the default is MyApp.User - using the name of the project
  • unique_id - the name which is used to identify the user (in the database)

    • the default is :username
    • this can also be a function which checks the user input and returns an atom
    • see the Openmaize.Login.Name module for some example functions

Examples with Phoenix

The easiest way to use this plug is to run the mix openmaize.gen.phoenixauth command, which will create all the files you need.

If you do not want to run the above command, you need to create the following files:

  • controllers/session_controller.ex
  • views/session_view.ex
  • templates/session/new.html.eex

In the new.html.eex file, make sure that the form uses session to identify the user.

You also need to add the following command to the web/router.ex file:

resources "/sessions", SessionController, only: [:new, :create, :delete]

Add the following command to the session_controller.ex file:

plug Openmaize.Login when action in [:create]

If you want to use email to identify the user:

plug Openmaize.Login, [unique_id: :email] when action in [:create]

If you want to use email or username to identify the user (allowing the end user a choice):

plug Openmaize.Login, [unique_id: &Openmaize.Login.Name.email_username/1] when action in [:create]

Summary

Functions

Handle the login POST request

Callback implementation for Plug.init/1

Functions

call(conn, arg)

Handle the login POST request.

If the login is successful and otp_required: true is not in the user model, the user will be added to the conn.private.openmaize_user value. You can then use the information in the user model to add the user to the session.

If the login is unsuccessful, an error message will be added to conn.private.openmaize_error.

Two factor authentication

If otp_required: true is in the user model and if the login is successful, conn.private.openmaize_otpdata will be set to the user id.

User email confirmation

Before checking the password, the user struct will be checked for a confirmed_at value. If it is set to nil, an error message will be added to conn.private.openmaize_error.

init(opts)

Callback implementation for Plug.init/1.