diff --git a/CHANGELOG.md b/CHANGELOG.md index ec7760a..763fbab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,5 @@ # v0.9.13 +- Add button to resend email verification email - Move staging to container, rather than ammo - Add date restriction dropdown to range page - Fix dates not rendering properly in table diff --git a/config/config.exs b/config/config.exs index 5535955..1277a6a 100644 --- a/config/config.exs +++ b/config/config.exs @@ -8,6 +8,7 @@ import Config config :cannery, + env: :dev, ecto_repos: [Cannery.Repo], generators: [binary_id: true] diff --git a/config/prod.exs b/config/prod.exs index d2e23eb..b478b58 100644 --- a/config/prod.exs +++ b/config/prod.exs @@ -14,6 +14,8 @@ config :cannery, CanneryWeb.Endpoint, cache_static_manifest: "priv/static/cache_ # Do not print debug messages in production config :logger, level: :info +config :cannery, env: :prod + # ## SSL Support # # To get SSL working, you will need to add the `https` key diff --git a/config/test.exs b/config/test.exs index 84bb570..da97e09 100644 --- a/config/test.exs +++ b/config/test.exs @@ -20,6 +20,8 @@ config :cannery, CanneryWeb.Endpoint, secret_key_base: "S3qq9QtUdsFtlYej+HTjAVN95uP5i5tf2sPYINWSQfCKJghFj2B1+wTAoljZyHOK", server: false +config :cannery, env: :test + # In test we don't send emails. config :cannery, Cannery.Mailer, adapter: Swoosh.Adapters.Test diff --git a/lib/cannery_web/live/invite_live/index.ex b/lib/cannery_web/live/invite_live/index.ex index da6b161..dc1fea5 100644 --- a/lib/cannery_web/live/invite_live/index.ex +++ b/lib/cannery_web/live/invite_live/index.ex @@ -116,6 +116,20 @@ defmodule CanneryWeb.InviteLive.Index do {:noreply, socket |> put_flash(:info, dgettext("prompts", "Copied to clipboard"))} end + def handle_event("resend_email_verification", %{"id" => id}, socket) do + %{email: user_email} = user = Accounts.get_user!(id) + + Accounts.deliver_user_confirmation_instructions( + user, + fn token -> url(CanneryWeb.Endpoint, ~p"/users/confirm/#{token}") end + ) + + prompt = + dgettext("prompts", "Email resent to %{user_email} succesfully", user_email: user_email) + + {:noreply, socket |> put_flash(:info, prompt) |> display_invites()} + end + def handle_event( "delete_user", %{"id" => id}, diff --git a/lib/cannery_web/live/invite_live/index.html.heex b/lib/cannery_web/live/invite_live/index.html.heex index 1b9bd8f..84f9bdb 100644 --- a/lib/cannery_web/live/invite_live/index.html.heex +++ b/lib/cannery_web/live/invite_live/index.html.heex @@ -1,10 +1,10 @@ -
-

+
+

<%= gettext("Invites") %>

<%= if @invites |> Enum.empty?() do %> -

+

<%= gettext("No invites") %> <%= display_emoji("😔") %>

@@ -95,7 +95,7 @@ <%= unless @admins |> Enum.empty?() do %>
-

+

<%= gettext("Admins") %>

@@ -123,27 +123,38 @@ <%= unless @users |> Enum.empty?() do %>
-

+

<%= gettext("Users") %>

<.user_card :for={user <- @users} user={user}> - <.link - href="#" - class="text-primary-600 link" - phx-click="delete_user" - phx-value-id={user.id} - data-confirm={ - dgettext( - "prompts", - "Are you sure you want to delete %{email}? This action is permanent!", - email: user.email - ) - } - > - - +
+ <.link + :if={!user.confirmed_at} + class="text-primary-600 link" + href="#" + phx-click="resend_email_verification" + phx-value-id={user.id} + > + + + <.link + class="text-primary-600 link" + data-confirm={ + dgettext( + "prompts", + "Are you sure you want to delete %{email}? This action is permanent!", + email: user.email + ) + } + href="#" + phx-click="delete_user" + phx-value-id={user.id} + > + + +
<% end %> diff --git a/lib/cannery_web/router.ex b/lib/cannery_web/router.ex index 992026c..57add6f 100644 --- a/lib/cannery_web/router.ex +++ b/lib/cannery_web/router.ex @@ -120,7 +120,7 @@ defmodule CanneryWeb.Router do # # Note that preview only shows emails that were sent by the same # node running the Phoenix server. - if Mix.env() == :dev do + if Application.compile_env(:cannery, :env) == :dev do scope "/dev" do pipe_through :browser diff --git a/priv/gettext/de/LC_MESSAGES/prompts.po b/priv/gettext/de/LC_MESSAGES/prompts.po index 339dcac..d1b84ee 100644 --- a/priv/gettext/de/LC_MESSAGES/prompts.po +++ b/priv/gettext/de/LC_MESSAGES/prompts.po @@ -58,7 +58,7 @@ msgid "A link to confirm your email change has been sent to the new address." msgstr "Eine Mail zum Bestätigen ihre Mailadresse wurde Ihnen zugesandt." #: lib/cannery_web/live/invite_live/index.html.heex:110 -#: lib/cannery_web/live/invite_live/index.html.heex:138 +#: lib/cannery_web/live/invite_live/index.html.heex:145 #, elixir-autogen, elixir-format msgid "Are you sure you want to delete %{email}? This action is permanent!" msgstr "" @@ -278,7 +278,7 @@ msgstr "%{name} erfolgreich aktiviert" msgid "%{invite_name} updated succesfully" msgstr "%{name} erfolgreich aktualisiert" -#: lib/cannery_web/live/invite_live/index.ex:125 +#: lib/cannery_web/live/invite_live/index.ex:139 #, elixir-autogen, elixir-format, fuzzy msgid "%{user_email} deleted succesfully" msgstr "%{name} erfolgreich gelöscht" @@ -297,3 +297,8 @@ msgstr "Sind Sie sicher, dass sie %{name} auf unbegrenzt setzen möchten?" #, elixir-autogen, elixir-format msgid "Container unstaged succesfully" msgstr "" + +#: lib/cannery_web/live/invite_live/index.ex:128 +#, elixir-autogen, elixir-format +msgid "Email resent to %{user_email} succesfully" +msgstr "" diff --git a/priv/gettext/en/LC_MESSAGES/prompts.po b/priv/gettext/en/LC_MESSAGES/prompts.po index 0fc7ca0..517d52b 100644 --- a/priv/gettext/en/LC_MESSAGES/prompts.po +++ b/priv/gettext/en/LC_MESSAGES/prompts.po @@ -45,7 +45,7 @@ msgid "A link to confirm your email change has been sent to the new address." msgstr "" #: lib/cannery_web/live/invite_live/index.html.heex:110 -#: lib/cannery_web/live/invite_live/index.html.heex:138 +#: lib/cannery_web/live/invite_live/index.html.heex:145 #, elixir-autogen, elixir-format msgid "Are you sure you want to delete %{email}? This action is permanent!" msgstr "" @@ -257,7 +257,7 @@ msgstr "" msgid "%{invite_name} updated succesfully" msgstr "" -#: lib/cannery_web/live/invite_live/index.ex:125 +#: lib/cannery_web/live/invite_live/index.ex:139 #, elixir-autogen, elixir-format, fuzzy msgid "%{user_email} deleted succesfully" msgstr "" @@ -276,3 +276,8 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Container unstaged succesfully" msgstr "" + +#: lib/cannery_web/live/invite_live/index.ex:128 +#, elixir-autogen, elixir-format +msgid "Email resent to %{user_email} succesfully" +msgstr "" diff --git a/priv/gettext/es/LC_MESSAGES/prompts.po b/priv/gettext/es/LC_MESSAGES/prompts.po index e5ba31c..d4bf73a 100644 --- a/priv/gettext/es/LC_MESSAGES/prompts.po +++ b/priv/gettext/es/LC_MESSAGES/prompts.po @@ -60,7 +60,7 @@ msgstr "" "dirección." #: lib/cannery_web/live/invite_live/index.html.heex:110 -#: lib/cannery_web/live/invite_live/index.html.heex:138 +#: lib/cannery_web/live/invite_live/index.html.heex:145 #, elixir-autogen, elixir-format msgid "Are you sure you want to delete %{email}? This action is permanent!" msgstr "Está seguro que desea eliminar %{email}? Esta acción es permanente!" @@ -279,7 +279,7 @@ msgstr "%{name} activado exitosamente" msgid "%{invite_name} updated succesfully" msgstr "%{name} actualizado exitosamente" -#: lib/cannery_web/live/invite_live/index.ex:125 +#: lib/cannery_web/live/invite_live/index.ex:139 #, elixir-autogen, elixir-format, fuzzy msgid "%{user_email} deleted succesfully" msgstr "%{name} borrado exitosamente" @@ -298,3 +298,8 @@ msgstr "Está seguro que desea hacer %{name} ilimitado?" #, elixir-autogen, elixir-format msgid "Container unstaged succesfully" msgstr "" + +#: lib/cannery_web/live/invite_live/index.ex:128 +#, elixir-autogen, elixir-format +msgid "Email resent to %{user_email} succesfully" +msgstr "" diff --git a/priv/gettext/fr/LC_MESSAGES/prompts.po b/priv/gettext/fr/LC_MESSAGES/prompts.po index 5bee4d9..8233287 100644 --- a/priv/gettext/fr/LC_MESSAGES/prompts.po +++ b/priv/gettext/fr/LC_MESSAGES/prompts.po @@ -60,7 +60,7 @@ msgstr "" "adresse." #: lib/cannery_web/live/invite_live/index.html.heex:110 -#: lib/cannery_web/live/invite_live/index.html.heex:138 +#: lib/cannery_web/live/invite_live/index.html.heex:145 #, elixir-autogen, elixir-format msgid "Are you sure you want to delete %{email}? This action is permanent!" msgstr "" @@ -279,7 +279,7 @@ msgstr "%{name} activé·e avec succès" msgid "%{invite_name} updated succesfully" msgstr "%{name} mis à jour avec succès" -#: lib/cannery_web/live/invite_live/index.ex:125 +#: lib/cannery_web/live/invite_live/index.ex:139 #, elixir-autogen, elixir-format, fuzzy msgid "%{user_email} deleted succesfully" msgstr "%{name} supprimé· avec succès" @@ -298,3 +298,8 @@ msgstr "Êtes-vous certain·e de vouloir rendre %{name} illimité ?" #, elixir-autogen, elixir-format msgid "Container unstaged succesfully" msgstr "" + +#: lib/cannery_web/live/invite_live/index.ex:128 +#, elixir-autogen, elixir-format +msgid "Email resent to %{user_email} succesfully" +msgstr "" diff --git a/priv/gettext/ga/LC_MESSAGES/prompts.po b/priv/gettext/ga/LC_MESSAGES/prompts.po index e279bec..e9a67e7 100644 --- a/priv/gettext/ga/LC_MESSAGES/prompts.po +++ b/priv/gettext/ga/LC_MESSAGES/prompts.po @@ -56,7 +56,7 @@ msgid "A link to confirm your email change has been sent to the new address." msgstr "" #: lib/cannery_web/live/invite_live/index.html.heex:110 -#: lib/cannery_web/live/invite_live/index.html.heex:138 +#: lib/cannery_web/live/invite_live/index.html.heex:145 #, elixir-autogen, elixir-format msgid "Are you sure you want to delete %{email}? This action is permanent!" msgstr "" @@ -271,7 +271,7 @@ msgstr "" msgid "%{invite_name} updated succesfully" msgstr "" -#: lib/cannery_web/live/invite_live/index.ex:125 +#: lib/cannery_web/live/invite_live/index.ex:139 #, elixir-autogen, elixir-format, fuzzy msgid "%{user_email} deleted succesfully" msgstr "" @@ -290,3 +290,8 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Container unstaged succesfully" msgstr "" + +#: lib/cannery_web/live/invite_live/index.ex:128 +#, elixir-autogen, elixir-format +msgid "Email resent to %{user_email} succesfully" +msgstr "" diff --git a/priv/gettext/it/LC_MESSAGES/prompts.po b/priv/gettext/it/LC_MESSAGES/prompts.po index a4abac2..682c150 100644 --- a/priv/gettext/it/LC_MESSAGES/prompts.po +++ b/priv/gettext/it/LC_MESSAGES/prompts.po @@ -56,7 +56,7 @@ msgid "A link to confirm your email change has been sent to the new address." msgstr "" #: lib/cannery_web/live/invite_live/index.html.heex:110 -#: lib/cannery_web/live/invite_live/index.html.heex:138 +#: lib/cannery_web/live/invite_live/index.html.heex:145 #, elixir-autogen, elixir-format msgid "Are you sure you want to delete %{email}? This action is permanent!" msgstr "" @@ -268,7 +268,7 @@ msgstr "" msgid "%{invite_name} updated succesfully" msgstr "" -#: lib/cannery_web/live/invite_live/index.ex:125 +#: lib/cannery_web/live/invite_live/index.ex:139 #, elixir-autogen, elixir-format msgid "%{user_email} deleted succesfully" msgstr "" @@ -287,3 +287,8 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Container unstaged succesfully" msgstr "" + +#: lib/cannery_web/live/invite_live/index.ex:128 +#, elixir-autogen, elixir-format +msgid "Email resent to %{user_email} succesfully" +msgstr "" diff --git a/priv/gettext/prompts.pot b/priv/gettext/prompts.pot index 265298a..6cac035 100644 --- a/priv/gettext/prompts.pot +++ b/priv/gettext/prompts.pot @@ -45,7 +45,7 @@ msgid "A link to confirm your email change has been sent to the new address." msgstr "" #: lib/cannery_web/live/invite_live/index.html.heex:110 -#: lib/cannery_web/live/invite_live/index.html.heex:138 +#: lib/cannery_web/live/invite_live/index.html.heex:145 #, elixir-autogen, elixir-format msgid "Are you sure you want to delete %{email}? This action is permanent!" msgstr "" @@ -257,7 +257,7 @@ msgstr "" msgid "%{invite_name} updated succesfully" msgstr "" -#: lib/cannery_web/live/invite_live/index.ex:125 +#: lib/cannery_web/live/invite_live/index.ex:139 #, elixir-autogen, elixir-format msgid "%{user_email} deleted succesfully" msgstr "" @@ -276,3 +276,8 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Container unstaged succesfully" msgstr "" + +#: lib/cannery_web/live/invite_live/index.ex:128 +#, elixir-autogen, elixir-format +msgid "Email resent to %{user_email} succesfully" +msgstr ""