Files
sso-bsn/lib/sso_bsn_web/controllers/user_session_controller.ex
2023-11-09 17:03:20 +00:00

39 lines
953 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?
{: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
def redirect_next(conn, %{ "next" => next }) do
conn |> redirect(external: next)
end
end