Login per email token. With logout of previous account if already logged in.
This commit is contained in:
@ -15,9 +15,6 @@ defmodule BeetRoundServerWeb.UserJSON do
|
||||
%{data: %{email: user.email, id: user.id, token: encoded_token}}
|
||||
end
|
||||
|
||||
@doc """
|
||||
Renders a single user.
|
||||
"""
|
||||
def show(%{user: user}) do
|
||||
%{data: data(user)}
|
||||
end
|
||||
|
||||
@ -12,6 +12,23 @@ defmodule BeetRoundServerWeb.UserSessionController do
|
||||
create(conn, params, "Welcome back!")
|
||||
end
|
||||
|
||||
def login(conn, %{"token" => token}) do
|
||||
IO.puts("Login via token:")
|
||||
IO.inspect(token)
|
||||
|
||||
UserAuth.log_out_user_without_redirect(conn)
|
||||
|
||||
if user = Accounts.get_user_by_email_token(token) do
|
||||
conn
|
||||
|> put_flash(:info, "Login successful!")
|
||||
|> UserAuth.log_in_without_creating_cookie(user)
|
||||
else
|
||||
conn
|
||||
|> put_flash(:error, "Invalid token")
|
||||
|> redirect(to: ~p"/")
|
||||
end
|
||||
end
|
||||
|
||||
# magic link login
|
||||
defp create(conn, %{"user" => %{"token" => token} = user_params}, info) do
|
||||
case Accounts.login_user_by_magic_link(token) do
|
||||
|
||||
Reference in New Issue
Block a user