send email to moderators for pending user - #877

This commit is contained in:
Laurent GAY
2025-10-01 12:42:45 +02:00
parent 9d4a558c1a
commit 36e045ed3d
5 changed files with 232 additions and 1 deletions

View File

@@ -295,6 +295,12 @@ defmodule Mobilizon.GraphQL.Resolvers.User do
actor = Users.get_actor_for_user(user)
if Config.instance_registrations_moderation?() do
Enum.each(Users.list_moderators(), fn moderator ->
moderator
|> Email.Admin.user_pending(user)
|> Email.Mailer.send_email()
end)
{:ok,
%{
access_token: "",

View File

@@ -29,6 +29,22 @@ defmodule Mobilizon.Web.Email.Admin do
|> render_body(:report, %{locale: locale, subject: subject, report: report})
end
@spec user_pending(User.t(), User.t()) :: Swoosh.Email.t()
def user_pending(%User{email: moderator_email} = moderator, %User{} = user) do
locale = Map.get(moderator, :locale, "en")
Gettext.put_locale(locale)
subject =
gettext(
"New pending user on Mobilizon instance %{instance}",
instance: Config.instance_name()
)
[to: moderator_email, subject: subject]
|> Email.base_email()
|> render_body(:user_pending, %{locale: locale, subject: subject, user: user})
end
@spec user_email_change_old(User.t(), String.t()) :: Swoosh.Email.t()
def user_email_change_old(
%User{

View File

@@ -0,0 +1,73 @@
<!-- HERO -->
<tr>
<td bgcolor="#474467" align="center" style="padding: 0px 10px 0px 10px;">
<!--[if (gte mso 9)|(IE)]>
<table align="center" border="0" cellspacing="0" cellpadding="0" width="600">
<tr>
<td align="center" valign="top" width="600">
<![endif]-->
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="max-width: 600px;">
<tr>
<td
bgcolor="#ffffff"
align="center"
valign="top"
style="padding: 40px 20px 20px 20px; border-radius: 4px 4px 0px 0px; color: #3A384C; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 48px; font-weight: 400; line-height: 48px;"
>
<h1 style="font-size: 48px; font-weight: 400; margin: 0;">
<%= gettext("New pending user on <b>%{instance}</b>", instance: @instance_name) |> raw %>
</h1>
</td>
</tr>
</table>
<!--[if (gte mso 9)|(IE)]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>
<!-- COPY BLOCK -->
<tr>
<td bgcolor="#E6E4F4" align="center" style="padding: 0px 10px 0px 10px;">
<!--[if (gte mso 9)|(IE)]>
<table align="center" border="0" cellspacing="0" cellpadding="0" width="600">
<tr>
<td align="center" valign="top" width="600">
<![endif]-->
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="max-width: 600px;">
<!-- COPY -->
<tr>
<td
bgcolor="#ffffff"
align="left"
style="padding: 20px 30px 0px 30px; color: #474467; font-family: 'Roboto', Helvetica, Arial, sans-serif; font-size: 18px; font-weight: 400; line-height: 25px;"
>
<p style="margin: 0;">
<%= gettext("New pending user from %{user} on %{instance}",
user: @user.email,
instance: @instance_name
)
|> raw %>
</p>
</td>
</tr>
<tr>
<td align="center" style="border-radius: 3px;" bgcolor="#3C376E">
<a
href={"#{"#{Mobilizon.Web.Endpoint.url()}/settings/admin/users?pendingFilter=true"}"}
target="_blank"
style="font-size: 20px; font-family: Helvetica, Arial, sans-serif; color: #ffffff; text-decoration: none; padding: 15px 25px; border-radius: 2px; border: 1px solid #3C376E; display: inline-block;"
>
<%= gettext("Login to view the list of pending users") %>
</a>
</td>
</tr>
</table>
<!--[if (gte mso 9)|(IE)]>
</td>
</tr>
</table>
<![endif]-->
</td>
</tr>

View File

@@ -0,0 +1,3 @@
<%= gettext "New pending user from %{user} on %{instance}", user: @user.email, instance: @instance_name %>
<%= gettext "Login to view the list of pending users:" %> <%= "#{Mobilizon.Web.Endpoint.url()}/settings/admin/users?pendingFilter=true" %>