O'Reilly logo

Programming Phoenix by Jose Valim, Bruce Tate, Chris McCord

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Writing an Authentication Plug

The authentication process works in two stages. First, we’ll store the user ID in the session every time a new user registers or a user logs in. Second, we’ll check if there’s a new user in the session and store it in conn.assigns for every incoming request, so it can be accessed in our controllers and views. Let’s start with the second part because it’s a little easier to follow.

Create a file called web/controllers/auth.ex that looks like this:

 defmodule​ Rumbl.Auth ​do
 import​ Plug.Conn
 
 def​ init(opts) ​do
  Keyword.fetch!(opts, ​:repo​)
 end
 
 def​ call(conn, repo) ​do
  user_id = get_session(conn, ​:user_id​)
  user = user_id && repo.get(Rumbl.User, ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required