April 2016
Beginner to intermediate
300 pages
6h 58m
English
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, ... |