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
- the default is
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.
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
.
Callback implementation for Plug.init/1
.