Files

35 lines
954 B
Elixir

defmodule DexiWeb.SessionController do
use DexiWeb, :controller
alias Dexi.Accounts
alias Dexi.GridsLoginHandler
alias DexiWeb.UserAuth
def create(conn, %{"message_id" => message_id}) do
with {:ok, pubkey} <-
GridsLoginHandler.consume_pubkey(conn.assigns.session_id, message_id),
{:ok, user, status} <- Accounts.get_or_create_user_with_status(pubkey) do
conn = UserAuth.log_in_user(conn, user)
redirect(conn, to: signed_in_path(status))
else
_error ->
conn
|> put_flash(:error, "That login request is invalid or has expired.")
|> redirect(to: ~p"/login")
end
end
def delete(conn, _params) do
session_id = conn.assigns.session_id
GridsLoginHandler.cleanout_session_data(session_id)
conn
|> UserAuth.log_out_user()
|> redirect(to: ~p"/")
end
defp signed_in_path(:created), do: ~p"/account"
defp signed_in_path(:existing), do: ~p"/"
end