feat: prevent join requests with equal mail
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Simon 2026-03-13 11:18:34 +01:00
parent 40a4461d23
commit 086ecdcb1b
Signed by: simon
GPG key ID: 40E7A58C4AA1EDB2
22 changed files with 534 additions and 11 deletions

View file

@ -3800,3 +3800,34 @@ msgstr "Status und Prüfung"
#, elixir-autogen, elixir-format
msgid "We could not send the confirmation email. Please try again later or contact support."
msgstr "Die Bestätigungs-E-Mail konnte nicht versendet werden. Bitte versuche es später erneut oder wende dich an den Support."
#: lib/mv_web/templates/emails/join_already_member.html.heex
#: lib/mv_web/templates/emails/join_already_pending.html.heex
#, elixir-autogen, elixir-format
msgid "If you have any questions, please contact us."
msgstr "Bei Fragen kannst du dich gerne an uns wenden."
#: lib/mv_web/emails/join_already_member_email.ex
#, elixir-autogen, elixir-format
msgid "Membership application already a member"
msgstr "Mitgliedsantrag bereits Mitglied"
#: lib/mv_web/emails/join_already_pending_email.ex
#, elixir-autogen, elixir-format
msgid "Membership application already under review"
msgstr "Mitgliedsantrag wird bereits geprüft"
#: lib/mv_web/templates/emails/join_already_member.html.heex
#, elixir-autogen, elixir-format
msgid "We have received your request. The email address you entered is already registered as a member."
msgstr "Wir haben deine Anfrage erhalten. Die angegebene E-Mail-Adresse ist bereits als Mitglied registriert."
#: lib/mv_web/templates/emails/join_already_pending.html.heex
#, elixir-autogen, elixir-format
msgid "We have received your request. You already have a membership application that is being reviewed."
msgstr "Wir haben deine Anfrage erhalten. Du hast bereits einen Mitgliedsantrag, der geprüft wird."
#: lib/mv_web/templates/emails/join_confirmation.html.heex
#, elixir-autogen, elixir-format
msgid "You already had a pending request. Here is a new confirmation link."
msgstr "Du hattest bereits einen offenen Antrag. Hier ist ein neuer Bestätigungslink."

View file

@ -3800,3 +3800,34 @@ msgstr ""
#, elixir-autogen, elixir-format
msgid "We could not send the confirmation email. Please try again later or contact support."
msgstr ""
#: lib/mv_web/templates/emails/join_already_member.html.heex
#: lib/mv_web/templates/emails/join_already_pending.html.heex
#, elixir-autogen, elixir-format
msgid "If you have any questions, please contact us."
msgstr ""
#: lib/mv_web/emails/join_already_member_email.ex
#, elixir-autogen, elixir-format
msgid "Membership application already a member"
msgstr ""
#: lib/mv_web/emails/join_already_pending_email.ex
#, elixir-autogen, elixir-format
msgid "Membership application already under review"
msgstr ""
#: lib/mv_web/templates/emails/join_already_member.html.heex
#, elixir-autogen, elixir-format
msgid "We have received your request. The email address you entered is already registered as a member."
msgstr ""
#: lib/mv_web/templates/emails/join_already_pending.html.heex
#, elixir-autogen, elixir-format
msgid "We have received your request. You already have a membership application that is being reviewed."
msgstr ""
#: lib/mv_web/templates/emails/join_confirmation.html.heex
#, elixir-autogen, elixir-format
msgid "You already had a pending request. Here is a new confirmation link."
msgstr ""

View file

@ -3800,3 +3800,34 @@ msgstr "Status and review"
#, elixir-autogen, elixir-format
msgid "We could not send the confirmation email. Please try again later or contact support."
msgstr ""
#: lib/mv_web/templates/emails/join_already_member.html.heex
#: lib/mv_web/templates/emails/join_already_pending.html.heex
#, elixir-autogen, elixir-format
msgid "If you have any questions, please contact us."
msgstr "If you have any questions, please contact us."
#: lib/mv_web/emails/join_already_member_email.ex
#, elixir-autogen, elixir-format
msgid "Membership application already a member"
msgstr "Membership application already a member"
#: lib/mv_web/emails/join_already_pending_email.ex
#, elixir-autogen, elixir-format
msgid "Membership application already under review"
msgstr "Membership application already under review"
#: lib/mv_web/templates/emails/join_already_member.html.heex
#, elixir-autogen, elixir-format
msgid "We have received your request. The email address you entered is already registered as a member."
msgstr "We have received your request. The email address you entered is already registered as a member."
#: lib/mv_web/templates/emails/join_already_pending.html.heex
#, elixir-autogen, elixir-format
msgid "We have received your request. You already have a membership application that is being reviewed."
msgstr "We have received your request. You already have a membership application that is being reviewed."
#: lib/mv_web/templates/emails/join_confirmation.html.heex
#, elixir-autogen, elixir-format
msgid "You already had a pending request. Here is a new confirmation link."
msgstr "You already had a pending request. Here is a new confirmation link."

View file

@ -0,0 +1,30 @@
defmodule Mv.Repo.Migrations.AddReviewedByDisplayToJoinRequests do
@moduledoc """
Adds reviewed_by_display to join_requests for showing reviewer in UI without loading User.
Backfills existing rows from users.email where reviewed_by_user_id is set.
"""
use Ecto.Migration
def up do
alter table(:join_requests) do
add :reviewed_by_display, :text
end
# Backfill from users.email for rows that have reviewed_by_user_id
execute """
UPDATE join_requests j
SET reviewed_by_display = u.email
FROM users u
WHERE j.reviewed_by_user_id = u.id
AND j.reviewed_by_user_id IS NOT NULL
"""
end
def down do
alter table(:join_requests) do
remove :reviewed_by_display
end
end
end