36 lines
904 B
Elixir
36 lines
904 B
Elixir
defmodule SsoBsnWeb.UserSessionController do
|
|
use SsoBsnWeb, :controller
|
|
|
|
alias SsoBsn.Accounts
|
|
alias SsoBsnWeb.UserAuth
|
|
|
|
def login(conn, %{"token" => login_token}) do
|
|
case Accounts.consume_login_token(login_token) do
|
|
{:ok, user} ->
|
|
conn
|
|
|> UserAuth.log_in_user(user) # TODO: pass through remember-me value?
|
|
|> redirect(to: ~p"/users/settings")
|
|
{:error, error} ->
|
|
dbg(error)
|
|
conn
|
|
|> put_flash(:error, "Invalid login token: #{inspect(error)}")
|
|
|> redirect(to: ~p"/users/log_in")
|
|
end
|
|
end
|
|
|
|
def delete(conn, _params) do
|
|
conn
|
|
|> put_flash(:info, "Logged out successfully.")
|
|
|> UserAuth.log_out_user()
|
|
end
|
|
|
|
def check_auth(conn, _params) do
|
|
user = conn.assigns[:current_user]
|
|
conn
|
|
|> put_resp_header("X-Auth-Username", user.username)
|
|
|> json(%{
|
|
username: user.username
|
|
})
|
|
end
|
|
end
|