Something went wrong. Try again.
This repository has no description
Something went wrong. Try again.
1.7 kB · 61 lines
Elixir
at main
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162defmodule TrackerWeb.AuthController do use TrackerWeb, :controller use AshAuthentication.Phoenix.Controller
def success(conn, activity, user, _token) do return_to = get_session(conn, :return_to) || ~p"/"
conn = conn |> delete_session(:return_to) |> store_in_session(user) # If your resource has a different name, update the assign name here (i.e :current_admin) |> assign(:current_user, user)
case activity do {:confirm_new_user, :confirm} -> conn |> put_flash(:info, "Your email address has now been confirmed") |> redirect(to: return_to)
{:password, :reset} -> conn |> put_flash(:info, "Your password has successfully been reset") |> redirect(to: return_to)
_ -> redirect(conn, to: return_to) end end
def failure(conn, activity, reason) do message = case {activity, reason} do {_, %AshAuthentication.Errors.AuthenticationFailed{ caused_by: %Ash.Error.Forbidden{ errors: [%AshAuthentication.Errors.CannotConfirmUnconfirmedUser{}] } }} -> """ You have already signed in another way, but have not confirmed your account. You can confirm your account using the link we sent to you, or by resetting your password. """
_ -> "Incorrect email or password" end
conn |> put_flash(:error, message) |> redirect(to: ~p"/sign-in") end
def sign_out(conn, _params) do return_to = get_session(conn, :return_to) || ~p"/"
conn |> clear_session(:tracker) |> redirect(to: return_to) endend