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|
|||def init(opts) do|
|||def call(conn, repo) do|
|||user_id = get_session(conn, :user_id)|
|||user = user_id && repo.get(Rumbl.User, ...|