Skip to content

Instantly share code, notes, and snippets.

@shankardevy

shankardevy/session_controller.ex Secret

Last active Feb 10, 2019
Embed
What would you like to do?
defmodule MangoWeb.Admin.SessionController do
use MangoWeb, :controller
plug :set_layout
alias Mango.Administration
def new(conn, _params) do
conn
|> render("new.html")
end
def send_link(conn, %{"session" => %{"email" => email}}) do
user = Administration.get_admin_by_email(email)
conn = case user do
nil ->
conn
|> put_flash(:error, "Authentication error")
user ->
link = generate_login_link(conn, user)
conn
|> put_flash(:info, "You magic login link is #{link}")
end
conn |> render("new.html")
end
defp generate_login_link(conn, user) do
token = Phoenix.Token.sign(MangoWeb.Endpoint, "user", user.id)
admin_session_url(conn, :create, %{token: token})
end
defp set_layout(conn, _) do
conn
|> put_layout("admin_login.html")
end
end
@SlowburnAZ

This comment has been minimized.

Copy link

@SlowburnAZ SlowburnAZ commented Feb 9, 2019

Where is the "admin_session_url" on line 28 coming from?

@SlowburnAZ

This comment has been minimized.

Copy link

@SlowburnAZ SlowburnAZ commented Feb 10, 2019

Nevermind... this is only an issue when working with Phoenix 1.4. For anyone else that ran into this problem, you'll need to use "Routes.admin_session_url(conn, :create, %{token: token})"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment