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 ""