Login per email token. With logout of previous account if already logged in.

This commit is contained in:
2026-02-18 15:01:31 +01:00
parent 02b473bbf1
commit 55c128e25e
6 changed files with 71 additions and 4 deletions

View File

@ -40,6 +40,16 @@ defmodule BeetRoundServerWeb.UserAuth do
|> redirect(to: user_return_to || signed_in_path(conn))
end
def log_in_without_creating_cookie(conn, user) do
token = Accounts.generate_user_session_token(user)
user_return_to = get_session(conn, :user_return_to)
conn
|> renew_session(user)
|> put_token_in_session(token)
|> redirect(to: user_return_to || signed_in_path(conn))
end
@doc """
Logs the user out.
@ -59,6 +69,19 @@ defmodule BeetRoundServerWeb.UserAuth do
|> redirect(to: ~p"/")
end
def log_out_user_without_redirect(conn) do
user_token = get_session(conn, :user_token)
user_token && Accounts.delete_user_session_token(user_token)
if live_socket_id = get_session(conn, :live_socket_id) do
BeetRoundServerWeb.Endpoint.broadcast(live_socket_id, "disconnect", %{})
end
conn
|> renew_session(nil)
|> delete_resp_cookie(@remember_me_cookie)
end
@doc """
Authenticates the user by looking into the session and remember me token.
@ -259,7 +282,7 @@ defmodule BeetRoundServerWeb.UserAuth do
@doc "Returns the path to redirect to after log in."
# the user was already logged in, redirect to settings
def signed_in_path(%Plug.Conn{assigns: %{current_scope: %Scope{user: %Accounts.User{}}}}) do
~p"/users/settings"
~p"/biddings"
end
def signed_in_path(_), do: ~p"/biddings"