lib/google_auth_set.ex

# TODO: ask eric about naming
defmodule PlugParadoxAuth.GoogleAuthSet do
  import Plug.Conn

  def init(options) do
    options
  end

  def call(conn, _opts) do
    %{params: %{"code" => code}} = conn
    {:ok, token} = ElixirAuthGoogle.get_token(code, conn)
    {:ok, profile} = ElixirAuthGoogle.get_user_profile(token.access_token)

    put_session(conn, :google_user, profile.email)

    conn
    |> put_resp_header("location", get_session(conn, :google_auth_success_url))
    |> send_resp(302, "text/html")
  end
end