ufosc/AskAGator

View on GitHub
lib/ask_a_gator_web/controllers/session_controller.ex

Summary

Maintainability
Test Coverage
defmodule AskAGatorWeb.SessionController do
  use AskAGatorWeb, :controller

  alias AskAGator.Accounts

  def login(conn, _params) do
    render(conn, "login.html")
  end

  def create(conn, %{"user" => %{"email" => email, "password" => password}}) do
    case Accounts.authenticate_by_email_password(email, password) do
      {:ok, user} ->
        conn
        |> put_flash(:info, "Welcome back!")
        |> put_session(:current_user, user.id)
        |> configure_session(renew: true)
        |> redirect(to: "/")
      {:error, :unauthorized} ->
        conn
        |> put_flash(:error, "Bad email/password combination")
        |> redirect(to: Routes.session_path(conn, :login))
    end
  end

  def create(conn, _) do
    conn
    |> put_flash(:error, "Bad Parameters")
    |> redirect(to: Routes.session_path(conn, :login))
  end

  def logout(conn, _) do
    conn
    |> delete_session(:current_user)
    |> redirect(to: Routes.page_path(conn, :index))
  end
end