From 14a7df70817b74ac1d38728b084f789eb2761986 Mon Sep 17 00:00:00 2001 From: Rebecca Le <543859+sevenseacat@users.noreply.github.com> Date: Fri, 15 Nov 2024 03:35:55 +0800 Subject: [PATCH] feat: Add action-specific flash messages to the generated AuthController (#532) --- lib/mix/tasks/ash_authentication_phoenix.install.ex | 11 ++++++++++- .../tasks/ash_authentication_phoenix.install_test.exs | 11 ++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/lib/mix/tasks/ash_authentication_phoenix.install.ex b/lib/mix/tasks/ash_authentication_phoenix.install.ex index cb34f7e5..3e0959bd 100644 --- a/lib/mix/tasks/ash_authentication_phoenix.install.ex +++ b/lib/mix/tasks/ash_authentication_phoenix.install.ex @@ -252,14 +252,22 @@ defmodule Mix.Tasks.AshAuthenticationPhoenix.Install do use #{inspect(Igniter.Libs.Phoenix.web_module(igniter))}, :controller use AshAuthentication.Phoenix.Controller - def success(conn, _activity, user, _token) do + def success(conn, activity, user, _token) do return_to = get_session(conn, :return_to) || ~p"/" + message = + case activity do + {:confirm_new_user, :confirm} -> "Your email address has now been confirmed" + {:password, :reset} -> "Your password has successfully been reset" + _ -> "You are now signed in" + end + 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) + |> put_flash(:info, message) |> redirect(to: return_to) end @@ -274,6 +282,7 @@ defmodule Mix.Tasks.AshAuthenticationPhoenix.Install do conn |> clear_session() + |> put_flash(:info, "You are now signed out") |> redirect(to: return_to) end """ diff --git a/test/mix/tasks/ash_authentication_phoenix.install_test.exs b/test/mix/tasks/ash_authentication_phoenix.install_test.exs index a0801bb9..31f53a5f 100644 --- a/test/mix/tasks/ash_authentication_phoenix.install_test.exs +++ b/test/mix/tasks/ash_authentication_phoenix.install_test.exs @@ -87,14 +87,22 @@ defmodule Mix.Tasks.AshAuthenticationPhoenix.InstallTest do use TestWeb, :controller use AshAuthentication.Phoenix.Controller - def success(conn, _activity, user, _token) do + def success(conn, activity, user, _token) do return_to = get_session(conn, :return_to) || ~p"/" + message = + case activity do + {:confirm_new_user, :confirm} -> "Your email address has now been confirmed" + {:password, :reset} -> "Your password has successfully been reset" + _ -> "You are now signed in" + end + 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) + |> put_flash(:info, message) |> redirect(to: return_to) end @@ -109,6 +117,7 @@ defmodule Mix.Tasks.AshAuthenticationPhoenix.InstallTest do conn |> clear_session() + |> put_flash(:info, "You are now signed out") |> redirect(to: return_to) end end