Login per email token. With logout of previous account if already logged in.
This commit is contained in:
@ -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"
|
||||
|
||||
Reference in New Issue
Block a user